Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / extensions / api / permissions / permissions_api.cc
index e5ac3aa..0f23d4c 100644 (file)
@@ -7,17 +7,16 @@
 #include "base/memory/scoped_ptr.h"
 #include "chrome/browser/chrome_notification_types.h"
 #include "chrome/browser/extensions/api/permissions/permissions_api_helpers.h"
-#include "chrome/browser/extensions/extension_prefs.h"
 #include "chrome/browser/extensions/permissions_updater.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/common/extensions/api/permissions.h"
-#include "chrome/common/extensions/extension.h"
-#include "chrome/common/extensions/permissions/permissions_data.h"
+#include "extensions/browser/extension_prefs.h"
 #include "extensions/common/error_utils.h"
+#include "extensions/common/extension.h"
+#include "extensions/common/manifest_handlers/permissions_parser.h"
 #include "extensions/common/permissions/permission_message_provider.h"
+#include "extensions/common/permissions/permissions_data.h"
 #include "extensions/common/permissions/permissions_info.h"
-#include "extensions/common/url_pattern_set.h"
-#include "url/gurl.h"
 
 namespace extensions {
 
@@ -50,7 +49,7 @@ bool ignore_user_gesture_for_tests = false;
 
 }  // namespace
 
-bool PermissionsContainsFunction::RunImpl() {
+bool PermissionsContainsFunction::RunSync() {
   scoped_ptr<Contains::Params> params(Contains::Params::Create(*args_));
   EXTENSION_FUNCTION_VALIDATE(params);
 
@@ -62,18 +61,19 @@ bool PermissionsContainsFunction::RunImpl() {
     return false;
 
   results_ = Contains::Results::Create(
-      GetExtension()->GetActivePermissions()->Contains(*permissions.get()));
+      extension()->permissions_data()->active_permissions()->Contains(
+          *permissions.get()));
   return true;
 }
 
-bool PermissionsGetAllFunction::RunImpl() {
-  scoped_ptr<Permissions> permissions =
-      helpers::PackPermissionSet(GetExtension()->GetActivePermissions().get());
+bool PermissionsGetAllFunction::RunSync() {
+  scoped_ptr<Permissions> permissions = helpers::PackPermissionSet(
+      extension()->permissions_data()->active_permissions().get());
   results_ = GetAll::Results::Create(*permissions);
   return true;
 }
 
-bool PermissionsRemoveFunction::RunImpl() {
+bool PermissionsRemoveFunction::RunSync() {
   scoped_ptr<Remove::Params> params(Remove::Params::Create(*args_));
   EXTENSION_FUNCTION_VALIDATE(params);
 
@@ -84,8 +84,6 @@ bool PermissionsRemoveFunction::RunImpl() {
   if (!permissions.get())
     return false;
 
-  const Extension* extension = GetExtension();
-
   // Make sure they're only trying to remove permissions supported by this API.
   APIPermissionSet apis = permissions->apis();
   for (APIPermissionSet::const_iterator i = apis.begin();
@@ -98,17 +96,17 @@ bool PermissionsRemoveFunction::RunImpl() {
   }
 
   // Make sure we don't remove any required pemissions.
-  const PermissionSet* required =
-      PermissionsData::GetRequiredPermissions(extension);
+  scoped_refptr<const PermissionSet> required =
+      PermissionsParser::GetRequiredPermissions(extension());
   scoped_refptr<PermissionSet> intersection(
-      PermissionSet::CreateIntersection(permissions.get(), required));
+      PermissionSet::CreateIntersection(permissions.get(), required.get()));
   if (!intersection->IsEmpty()) {
     error_ = kCantRemoveRequiredPermissionsError;
     return false;
   }
 
   PermissionsUpdater(GetProfile())
-      .RemovePermissions(extension, permissions.get());
+      .RemovePermissions(extension(), permissions.get());
   results_ = Remove::Results::Create(true);
   return true;
 }
@@ -128,23 +126,23 @@ PermissionsRequestFunction::PermissionsRequestFunction() {}
 
 void PermissionsRequestFunction::InstallUIProceed() {
   PermissionsUpdater perms_updater(GetProfile());
-  perms_updater.AddPermissions(GetExtension(), requested_permissions_.get());
+  perms_updater.AddPermissions(extension(), requested_permissions_.get());
 
   results_ = Request::Results::Create(true);
   SendResponse(true);
 
-  Release();  // Balanced in RunImpl().
+  Release();  // Balanced in RunAsync().
 }
 
 void PermissionsRequestFunction::InstallUIAbort(bool user_initiated) {
   SendResponse(true);
 
-  Release();  // Balanced in RunImpl().
+  Release();  // Balanced in RunAsync().
 }
 
 PermissionsRequestFunction::~PermissionsRequestFunction() {}
 
-bool PermissionsRequestFunction::RunImpl() {
+bool PermissionsRequestFunction::RunAsync() {
   results_ = Request::Results::Create(false);
 
   if (!user_gesture() &&
@@ -176,19 +174,20 @@ bool PermissionsRequestFunction::RunImpl() {
   }
 
   // The requested permissions must be defined as optional in the manifest.
-  if (!PermissionsData::GetOptionalPermissions(GetExtension())
-          ->Contains(*requested_permissions_.get())) {
+  if (!PermissionsParser::GetOptionalPermissions(extension())
+           ->Contains(*requested_permissions_.get())) {
     error_ = kNotInOptionalPermissionsError;
     return false;
   }
 
   // We don't need to prompt the user if the requested permissions are a subset
   // of the granted permissions set.
-  scoped_refptr<const PermissionSet> granted = ExtensionPrefs::Get(
-      GetProfile())->GetGrantedPermissions(GetExtension()->id());
+  scoped_refptr<const PermissionSet> granted =
+      ExtensionPrefs::Get(GetProfile())
+          ->GetGrantedPermissions(extension()->id());
   if (granted.get() && granted->Contains(*requested_permissions_.get())) {
     PermissionsUpdater perms_updater(GetProfile());
-    perms_updater.AddPermissions(GetExtension(), requested_permissions_.get());
+    perms_updater.AddPermissions(extension(), requested_permissions_.get());
     results_ = Request::Results::Create(true);
     SendResponse(true);
     return true;
@@ -203,9 +202,10 @@ bool PermissionsRequestFunction::RunImpl() {
   // We don't need to show the prompt if there are no new warnings, or if
   // we're skipping the confirmation UI. All extension types but INTERNAL
   // are allowed to silently increase their permission level.
-  bool has_no_warnings =
-      PermissionMessageProvider::Get()->GetWarningMessages(
-          requested_permissions_, GetExtension()->GetType()).empty();
+  bool has_no_warnings = PermissionMessageProvider::Get()
+                             ->GetWarningMessages(requested_permissions_.get(),
+                                                  extension()->GetType())
+                             .empty();
   if (auto_confirm_for_tests == PROCEED || has_no_warnings ||
       extension_->location() == Manifest::COMPONENT) {
     InstallUIProceed();
@@ -216,7 +216,7 @@ bool PermissionsRequestFunction::RunImpl() {
     CHECK_EQ(DO_NOT_SKIP, auto_confirm_for_tests);
     install_ui_.reset(new ExtensionInstallPrompt(GetAssociatedWebContents()));
     install_ui_->ConfirmPermissions(
-        this, GetExtension(), requested_permissions_.get());
+        this, extension(), requested_permissions_.get());
   }
 
   return true;