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

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

Issue 140433003: tab capture: Change the permissions for tabs.captureVisibleTab(). (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 6 years, 11 months 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 "extensions/common/permissions/permissions_data.h" 5 #include "extensions/common/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"
(...skipping 519 matching lines...) Expand 10 before | Expand all | Expand 10 after
530 530
531 const ExtensionsClient::ScriptingWhitelist& whitelist = 531 const ExtensionsClient::ScriptingWhitelist& whitelist =
532 ExtensionsClient::Get()->GetScriptingWhitelist(); 532 ExtensionsClient::Get()->GetScriptingWhitelist();
533 533
534 return std::find(whitelist.begin(), whitelist.end(), extension->id()) != 534 return std::find(whitelist.begin(), whitelist.end(), extension->id()) !=
535 whitelist.end(); 535 whitelist.end();
536 } 536 }
537 537
538 // static 538 // static
539 bool PermissionsData::CanCaptureVisiblePage(const Extension* extension, 539 bool PermissionsData::CanCaptureVisiblePage(const Extension* extension,
540 const GURL& page_url,
541 int tab_id, 540 int tab_id,
542 std::string* error) { 541 std::string* error) {
542 scoped_refptr<const PermissionSet> active_permissions =
543 GetActivePermissions(extension);
544 const URLPattern all_urls(URLPattern::SCHEME_ALL,
545 URLPattern::kAllUrlsPattern);
546 if (active_permissions->explicit_hosts().ContainsPattern(all_urls))
547 return true;
548
543 if (tab_id >= 0) { 549 if (tab_id >= 0) {
544 scoped_refptr<const PermissionSet> tab_permissions = 550 scoped_refptr<const PermissionSet> tab_permissions =
545 GetTabSpecificPermissions(extension, tab_id); 551 GetTabSpecificPermissions(extension, tab_id);
546 if (tab_permissions.get() && 552 if (tab_permissions &&
547 tab_permissions->explicit_hosts().MatchesSecurityOrigin(page_url)) { 553 tab_permissions->HasAPIPermission(APIPermission::kTab)) {
548 return true; 554 return true;
549 } 555 }
556 if (error)
557 *error = errors::kActiveTabPermissionNotGranted;
558 return false;
550 } 559 }
551 560
552 if (HasHostPermission(extension, page_url) || 561 if (error)
553 page_url.GetOrigin() == extension->url()) { 562 *error = errors::kAllURLOrActiveTabNeeded;
554 return true;
555 }
556
557 if (error) {
558 *error = ErrorUtils::FormatErrorMessage(errors::kCannotAccessPage,
559 page_url.spec());
560 }
561 return false; 563 return false;
562 } 564 }
563 565
564 bool PermissionsData::ParsePermissions(Extension* extension, 566 bool PermissionsData::ParsePermissions(Extension* extension,
565 base::string16* error) { 567 base::string16* error) {
566 initial_required_permissions_.reset(new InitialPermissions); 568 initial_required_permissions_.reset(new InitialPermissions);
567 if (!ParseHelper(extension, 569 if (!ParseHelper(extension,
568 keys::kPermissions, 570 keys::kPermissions,
569 &initial_required_permissions_->api_permissions, 571 &initial_required_permissions_->api_permissions,
570 &initial_required_permissions_->host_permissions, 572 &initial_required_permissions_->host_permissions,
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
606 initial_optional_permissions_->api_permissions, 608 initial_optional_permissions_->api_permissions,
607 initial_optional_permissions_->manifest_permissions, 609 initial_optional_permissions_->manifest_permissions,
608 initial_optional_permissions_->host_permissions, 610 initial_optional_permissions_->host_permissions,
609 URLPatternSet()); 611 URLPatternSet());
610 612
611 initial_required_permissions_.reset(); 613 initial_required_permissions_.reset();
612 initial_optional_permissions_.reset(); 614 initial_optional_permissions_.reset();
613 } 615 }
614 616
615 } // namespace extensions 617 } // namespace extensions
OLDNEW
« no previous file with comments | « extensions/common/permissions/permissions_data.h ('k') | extensions/common/permissions/permissions_data_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698