<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns="http://tizen.org/ns/packages" package="@PACKAGE_NAME@" api-version="3.0" version="@VERSION@" install-location="internal-only">
+<manifest xmlns="http://tizen.org/ns/packages" package="@PACKAGE_NAME@" api-version="4.0" version="@VERSION@" install-location="internal-only">
<label>Internet</label>
<icon>org.tizen.browser.png</icon>
<description>Web Browser Application</description>
<privilege>http://tizen.org/privilege/network.get</privilege>
<privilege>http://tizen.org/privilege/internet</privilege>
<privilege>http://tizen.org/privilege/appdir.shareddata</privilege>
+ <privilege>http://tizen.org/privilege/location</privilege>
</privileges>
</manifest>
Name: org.tizen.browser-profile_mobile
Summary: Tizen Open Browser
-Version: 4.0.6
+Version: 4.0.8
Release: 0
Provides: org.tizen.browser = %{version}-%{release}
Conflicts: org.tizen.browser-profile_common
%endif
BuildRequires: pkgconfig(libtzplatform-config)
+BuildRequires: pkgconfig(capi-privacy-privilege-manager)
%define _appdir %{TZ_SYS_RO_APP}/%{alias}
%define _bindir %{_appdir}/bin
m_downloadControl = new DownloadControl();
orientationChanged();
+ request_application_permission("http://tizen.org/privilege/location");
+
BROWSER_LOGD("[%s:%d] Check permissions", __PRETTY_FUNCTION__, __LINE__);
auto permissions = *getPermissionsMap();
Eina_List* permList = nullptr;
ewk_policy_decision_use(policy_decision);
}
+void WebView::__app_request_response_cb(ppm_call_cause_e cause, ppm_request_result_e result, const char* privilege, void* /*user_data*/) {
+ BROWSER_LOGD("[%s:%d]", __PRETTY_FUNCTION__, __LINE__);
+ if (cause == PRIVACY_PRIVILEGE_MANAGER_CALL_CAUSE_ERROR) {
+ BROWSER_LOGD("ppm_request_permission failed");
+ return;
+ }
+
+ switch (result) {
+ case PRIVACY_PRIVILEGE_MANAGER_REQUEST_RESULT_ALLOW_FOREVER:
+ BROWSER_LOGD("response_cb %s privilege was allowed forever", privilege);
+ break;
+ case PRIVACY_PRIVILEGE_MANAGER_REQUEST_RESULT_DENY_FOREVER:
+ BROWSER_LOGD("response_cb %s privilege was denied forever", privilege);
+ break;
+ case PRIVACY_PRIVILEGE_MANAGER_REQUEST_RESULT_DENY_ONCE:
+ BROWSER_LOGD("response_cb %s privilege was denied", privilege);
+ break;
+ }
+}
+
+void WebView:: request_application_permission(const char* privilege) {
+ BROWSER_LOGD("[%s:%d]", __PRETTY_FUNCTION__, __LINE__);
+ ppm_check_result_e result;
+ int ret = ppm_check_permission(privilege, &result);
+ if (ret != PRIVACY_PRIVILEGE_MANAGER_ERROR_NONE) {
+ BROWSER_LOGD("ppm_check_permission failed");
+ return;
+ }
+
+ switch (result) {
+ case PRIVACY_PRIVILEGE_MANAGER_CHECK_RESULT_ALLOW:
+ BROWSER_LOGD("request_application()%s privilege was allowed", privilege);
+ break;
+ case PRIVACY_PRIVILEGE_MANAGER_CHECK_RESULT_DENY:
+ BROWSER_LOGD("request_application()%s privilege was denied", privilege);
+ break;
+ case PRIVACY_PRIVILEGE_MANAGER_CHECK_RESULT_ASK:
+ ppm_request_permission(privilege, __app_request_response_cb, NULL);
+ break;
+ }
+}
} /* namespace webengine_service */
} /* end of basic_webengine */
} /* end of tizen_browser */
#include <app.h>
#include "AbstractRotatable.h"
#include <libsoup/soup.h>
+#include <privacy-privilege-manager/privacy_privilege_manager.h>
enum context_menu_type {
TEXT_ONLY = 0,
static void __setCertificatePem(void * data, Evas_Object * obj, void * event_info);
static void scriptLinkSearchCallback(Evas_Object *o, const char *value, void *data);
+ static void request_application_permission(const char* privilege);
+ static void __app_request_response_cb(ppm_call_cause_e cause, ppm_request_result_e result, const char* privilege, void* /*user_data*/);
// downloads
static void __policy_response_decide_cb(void *data, Evas_Object *obj, void *event_info);