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

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) {
543 if (tab_id >= 0) { 542 scoped_refptr<const PermissionSet> active_permissions =
544 scoped_refptr<const PermissionSet> tab_permissions = 543 GetActivePermissions(extension);
545 GetTabSpecificPermissions(extension, tab_id); 544 const URLPattern all_urls(URLPattern::SCHEME_ALL,
546 if (tab_permissions.get() && 545 URLPattern::kAllUrlsPattern);
547 tab_permissions->explicit_hosts().MatchesSecurityOrigin(page_url)) { 546 if (active_permissions &&
not at google - send to devlin 2014/01/23 20:16:35 it's the tab-specific permissions that need null c
sadrul 2014/01/23 20:23:49 More likely I misunderstood. Fixed
548 return true; 547 active_permissions->explicit_hosts().ContainsPattern(all_urls)) {
549 }
550 }
551
552 if (HasHostPermission(extension, page_url) ||
553 page_url.GetOrigin() == extension->url()) {
554 return true; 548 return true;
555 } 549 }
556 550
557 if (error) { 551 if (tab_id >= 0 &&
558 *error = ErrorUtils::FormatErrorMessage(errors::kCannotAccessPage, 552 HasAPIPermission(extension, APIPermission::kActiveTab)) {
not at google - send to devlin 2014/01/23 20:16:35 I think this check is unnecessary. Just let the Ac
sadrul 2014/01/23 20:23:49 Done.
559 page_url.spec()); 553 scoped_refptr<const PermissionSet> tab_permissions =
554 GetTabSpecificPermissions(extension, tab_id);
555 if (tab_permissions &&
556 tab_permissions->HasAPIPermission(APIPermission::kTab)) {
557 return true;
558 }
559 if (error)
560 *error = errors::kActiveTabPermissionNotGranted;
561 return false;
560 } 562 }
563
564 if (error)
565 *error = errors::kAllURLOrActiveTabNeeded;
561 return false; 566 return false;
562 } 567 }
563 568
564 bool PermissionsData::ParsePermissions(Extension* extension, 569 bool PermissionsData::ParsePermissions(Extension* extension,
565 base::string16* error) { 570 base::string16* error) {
566 initial_required_permissions_.reset(new InitialPermissions); 571 initial_required_permissions_.reset(new InitialPermissions);
567 if (!ParseHelper(extension, 572 if (!ParseHelper(extension,
568 keys::kPermissions, 573 keys::kPermissions,
569 &initial_required_permissions_->api_permissions, 574 &initial_required_permissions_->api_permissions,
570 &initial_required_permissions_->host_permissions, 575 &initial_required_permissions_->host_permissions,
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
606 initial_optional_permissions_->api_permissions, 611 initial_optional_permissions_->api_permissions,
607 initial_optional_permissions_->manifest_permissions, 612 initial_optional_permissions_->manifest_permissions,
608 initial_optional_permissions_->host_permissions, 613 initial_optional_permissions_->host_permissions,
609 URLPatternSet()); 614 URLPatternSet());
610 615
611 initial_required_permissions_.reset(); 616 initial_required_permissions_.reset();
612 initial_optional_permissions_.reset(); 617 initial_optional_permissions_.reset();
613 } 618 }
614 619
615 } // namespace extensions 620 } // 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