Home | History | Annotate | Download | only in extensions
      1 // Copyright 2013 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "chrome/renderer/extensions/renderer_permissions_policy_delegate.h"
      6 
      7 #include "base/command_line.h"
      8 #include "chrome/common/chrome_switches.h"
      9 #include "chrome/common/extensions/extension_constants.h"
     10 #include "chrome/common/extensions/extension_manifest_constants.h"
     11 #include "chrome/renderer/extensions/dispatcher.h"
     12 
     13 namespace extensions {
     14 
     15 namespace errors = extension_manifest_errors;
     16 
     17 RendererPermissionsPolicyDelegate::RendererPermissionsPolicyDelegate(
     18     Dispatcher* dispatcher) : dispatcher_(dispatcher) {
     19   PermissionsData::SetPolicyDelegate(this);
     20 }
     21 RendererPermissionsPolicyDelegate::~RendererPermissionsPolicyDelegate() {
     22   PermissionsData::SetPolicyDelegate(NULL);
     23 }
     24 
     25 bool RendererPermissionsPolicyDelegate::CanExecuteScriptOnPage(
     26     const Extension* extension,
     27     const GURL& document_url,
     28     const GURL& top_document_url,
     29     int tab_id,
     30     const UserScript* script,
     31     int process_id,
     32     std::string* error) {
     33   const Extension::ScriptingWhitelist* whitelist =
     34       Extension::GetScriptingWhitelist();
     35   if (std::find(whitelist->begin(), whitelist->end(), extension->id()) !=
     36       whitelist->end()) {
     37     return true;
     38   }
     39 
     40   if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kSigninProcess)) {
     41     if (error)
     42       *error = errors::kCannotScriptSigninPage;
     43     return false;
     44   }
     45 
     46   if (dispatcher_->IsExtensionActive(extension_misc::kWebStoreAppId)) {
     47     if (error)
     48       *error = errors::kCannotScriptGallery;
     49     return false;
     50   }
     51 
     52   return true;
     53 }
     54 
     55 }  // namespace extensions
     56