Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(37)

Side by Side Diff: chrome/common/extensions/permissions/permissions_data.cc

Issue 58853013: Refactor PermissionsData to pull out the check for scripting the webstore. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: nit Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/common/extensions/permissions/permissions_data.h" 5 #include "chrome/common/extensions/permissions/permissions_data.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/memory/scoped_ptr.h" 8 #include "base/memory/scoped_ptr.h"
9 #include "base/strings/string16.h" 9 #include "base/strings/string16.h"
10 #include "base/strings/string_number_conversions.h" 10 #include "base/strings/string_number_conversions.h"
11 #include "base/strings/stringprintf.h" 11 #include "base/strings/stringprintf.h"
12 #include "base/strings/utf_string_conversions.h" 12 #include "base/strings/utf_string_conversions.h"
13 #include "base/values.h" 13 #include "base/values.h"
14 #include "chrome/common/extensions/extension.h" 14 #include "chrome/common/extensions/extension.h"
15 #include "chrome/common/extensions/extension_constants.h"
16 #include "content/public/common/url_constants.h" 15 #include "content/public/common/url_constants.h"
17 #include "extensions/common/constants.h" 16 #include "extensions/common/constants.h"
18 #include "extensions/common/error_utils.h" 17 #include "extensions/common/error_utils.h"
19 #include "extensions/common/extensions_client.h" 18 #include "extensions/common/extensions_client.h"
20 #include "extensions/common/features/feature.h" 19 #include "extensions/common/features/feature.h"
21 #include "extensions/common/features/feature_provider.h" 20 #include "extensions/common/features/feature_provider.h"
22 #include "extensions/common/manifest.h" 21 #include "extensions/common/manifest.h"
23 #include "extensions/common/manifest_constants.h" 22 #include "extensions/common/manifest_constants.h"
24 #include "extensions/common/manifest_constants.h"
25 #include "extensions/common/permissions/api_permission_set.h" 23 #include "extensions/common/permissions/api_permission_set.h"
26 #include "extensions/common/permissions/permission_message_provider.h" 24 #include "extensions/common/permissions/permission_message_provider.h"
27 #include "extensions/common/permissions/permission_set.h" 25 #include "extensions/common/permissions/permission_set.h"
28 #include "extensions/common/permissions/permissions_info.h" 26 #include "extensions/common/permissions/permissions_info.h"
29 #include "extensions/common/switches.h" 27 #include "extensions/common/switches.h"
30 #include "extensions/common/url_pattern_set.h" 28 #include "extensions/common/url_pattern_set.h"
31 #include "extensions/common/user_script.h" 29 #include "extensions/common/user_script.h"
32 #include "url/gurl.h" 30 #include "url/gurl.h"
33 31
34 namespace extensions { 32 namespace extensions {
(...skipping 419 matching lines...) Expand 10 before | Expand all | Expand 10 after
454 452
455 // static 453 // static
456 bool PermissionsData::CanExecuteScriptOnPage(const Extension* extension, 454 bool PermissionsData::CanExecuteScriptOnPage(const Extension* extension,
457 const GURL& document_url, 455 const GURL& document_url,
458 const GURL& top_frame_url, 456 const GURL& top_frame_url,
459 int tab_id, 457 int tab_id,
460 const UserScript* script, 458 const UserScript* script,
461 int process_id, 459 int process_id,
462 std::string* error) { 460 std::string* error) {
463 base::AutoLock auto_lock(extension->permissions_data()->runtime_lock_); 461 base::AutoLock auto_lock(extension->permissions_data()->runtime_lock_);
464 // The gallery is special-cased as a restricted URL for scripting to prevent
465 // access to special JS bindings we expose to the gallery (and avoid things
466 // like extensions removing the "report abuse" link).
467 // TODO(erikkay): This seems like the wrong test. Shouldn't we we testing
468 // against the store app extent?
469 GURL store_url(extension_urls::GetWebstoreLaunchURL());
470 const CommandLine* command_line = CommandLine::ForCurrentProcess(); 462 const CommandLine* command_line = CommandLine::ForCurrentProcess();
471 bool can_execute_everywhere = CanExecuteScriptEverywhere(extension); 463 bool can_execute_everywhere = CanExecuteScriptEverywhere(extension);
472 464
473 if (g_policy_delegate && 465 if (g_policy_delegate &&
474 !g_policy_delegate->CanExecuteScriptOnPage( 466 !g_policy_delegate->CanExecuteScriptOnPage(
475 extension, document_url, top_frame_url, tab_id, 467 extension, document_url, top_frame_url, tab_id,
476 script, process_id, error)) 468 script, process_id, error))
477 return false; 469 return false;
478 470
479 if ((document_url.host() == store_url.host()) && 471 if (!can_execute_everywhere &&
480 !can_execute_everywhere && 472 !ExtensionsClient::Get()->IsScriptableURL(document_url, error)) {
481 !command_line->HasSwitch(switches::kAllowScriptingGallery)) {
482 if (error)
483 *error = errors::kCannotScriptGallery;
484 return false; 473 return false;
485 } 474 }
486 475
487 if (!command_line->HasSwitch(switches::kExtensionsOnChromeURLs)) { 476 if (!command_line->HasSwitch(switches::kExtensionsOnChromeURLs)) {
488 if (document_url.SchemeIs(chrome::kChromeUIScheme) && 477 if (document_url.SchemeIs(chrome::kChromeUIScheme) &&
489 !can_execute_everywhere) { 478 !can_execute_everywhere) {
490 if (error) 479 if (error)
491 *error = errors::kCannotAccessChromeUrl; 480 *error = errors::kCannotAccessChromeUrl;
492 return false; 481 return false;
493 } 482 }
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
618 optional_permission_set_ = new PermissionSet( 607 optional_permission_set_ = new PermissionSet(
619 initial_optional_permissions_->api_permissions, 608 initial_optional_permissions_->api_permissions,
620 initial_optional_permissions_->host_permissions, 609 initial_optional_permissions_->host_permissions,
621 URLPatternSet()); 610 URLPatternSet());
622 611
623 initial_required_permissions_.reset(); 612 initial_required_permissions_.reset();
624 initial_optional_permissions_.reset(); 613 initial_optional_permissions_.reset();
625 } 614 }
626 615
627 } // namespace extensions 616 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/common/extensions/chrome_extensions_client.cc ('k') | extensions/common/extensions_client.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698