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

Side by Side Diff: chrome/browser/extensions/api/web_request/web_request_permissions_unittest.cc

Issue 14358004: Almost all actions in Declarative Web Request require all_urls host permissions (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: All URLs -> all hosts; also rebased Created 7 years, 8 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) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/browser/extensions/api/web_request/web_request_permissions.h" 5 #include "chrome/browser/extensions/api/web_request/web_request_permissions.h"
6 6
7 #include "base/message_loop.h" 7 #include "base/message_loop.h"
8 #include "chrome/browser/extensions/extension_info_map.h" 8 #include "chrome/browser/extensions/extension_info_map.h"
9 #include "chrome/common/extensions/extension_constants.h" 9 #include "chrome/common/extensions/extension_constants.h"
10 #include "chrome/common/extensions/extension_manifest_constants.h"
11 #include "chrome/common/extensions/extension_test_util.h"
10 #include "chrome/test/base/testing_profile.h" 12 #include "chrome/test/base/testing_profile.h"
11 #include "content/public/browser/resource_request_info.h" 13 #include "content/public/browser/resource_request_info.h"
14 #include "content/public/test/test_browser_thread.h"
12 #include "net/url_request/url_request_test_util.h" 15 #include "net/url_request/url_request_test_util.h"
13 #include "testing/gtest/include/gtest/gtest.h" 16 #include "testing/gtest/include/gtest/gtest.h"
14 17
15 using content::ResourceRequestInfo; 18 using content::ResourceRequestInfo;
19 using extensions::Extension;
20 using extensions::Manifest;
21 using extension_test_util::LoadManifestUnchecked;
22
23 class ExtensionWebRequestHelpersTestWithThreadsTest : public testing::Test {
24 public:
25 ExtensionWebRequestHelpersTestWithThreadsTest()
26 : io_thread_(content::BrowserThread::IO, &message_loop_) {}
27
28 protected:
29 virtual void SetUp() OVERRIDE;
30
31 protected:
32 net::TestURLRequestContext context;
33
34 // This extension has Web Request permissions, but no host permission.
35 scoped_refptr<Extension> permissionless_extension_;
36 // This extension has Web Request permissions, and *.com a host permission.
37 scoped_refptr<Extension> com_extension_;
38 scoped_refptr<ExtensionInfoMap> extension_info_map_;
39
40 private:
41 MessageLoopForIO message_loop_;
42 content::TestBrowserThread io_thread_;
43 };
44
45 void ExtensionWebRequestHelpersTestWithThreadsTest::SetUp() {
46 testing::Test::SetUp();
47
48 std::string error;
49 permissionless_extension_ = LoadManifestUnchecked("permissions",
50 "web_request_no_host.json",
51 Manifest::INVALID_LOCATION,
52 Extension::NO_FLAGS,
53 "ext_id_1",
54 &error);
55 ASSERT_TRUE(permissionless_extension_) << error;
56 com_extension_ =
57 LoadManifestUnchecked("permissions",
58 "web_request_com_host_permissions.json",
59 Manifest::INVALID_LOCATION,
60 Extension::NO_FLAGS,
61 "ext_id_2",
62 &error);
63 ASSERT_TRUE(com_extension_) << error;
64 extension_info_map_ = new ExtensionInfoMap;
65 extension_info_map_->AddExtension(permissionless_extension_.get(),
66 base::Time::Now(),
67 false /*incognito_enabled*/);
68 extension_info_map_->AddExtension(
69 com_extension_.get(), base::Time::Now(), false /*incognito_enabled*/);
70 }
16 71
17 TEST(ExtensionWebRequestHelpersTest, TestHideRequestForURL) { 72 TEST(ExtensionWebRequestHelpersTest, TestHideRequestForURL) {
18 MessageLoopForIO message_loop; 73 MessageLoopForIO message_loop;
19 net::TestURLRequestContext context; 74 net::TestURLRequestContext context;
20 scoped_refptr<ExtensionInfoMap> extension_info_map(new ExtensionInfoMap); 75 scoped_refptr<ExtensionInfoMap> extension_info_map(new ExtensionInfoMap);
21 const char* sensitive_urls[] = { 76 const char* sensitive_urls[] = {
22 "http://clients2.google.com", 77 "http://clients2.google.com",
23 "http://clients22.google.com", 78 "http://clients22.google.com",
24 "https://clients2.google.com", 79 "https://clients2.google.com",
25 "http://clients2.google.com/service/update2/crx", 80 "http://clients2.google.com/service/update2/crx",
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
64 int frame_id = 17; 119 int frame_id = 17;
65 net::TestURLRequest sensitive_request( 120 net::TestURLRequest sensitive_request(
66 non_sensitive_url, NULL, &context, NULL); 121 non_sensitive_url, NULL, &context, NULL);
67 ResourceRequestInfo::AllocateForTesting(&sensitive_request, 122 ResourceRequestInfo::AllocateForTesting(&sensitive_request,
68 ResourceType::SCRIPT, NULL, process_id, frame_id); 123 ResourceType::SCRIPT, NULL, process_id, frame_id);
69 extension_info_map->RegisterExtensionProcess(extension_misc::kWebStoreAppId, 124 extension_info_map->RegisterExtensionProcess(extension_misc::kWebStoreAppId,
70 process_id, site_instance_id); 125 process_id, site_instance_id);
71 EXPECT_TRUE(WebRequestPermissions::HideRequest(extension_info_map.get(), 126 EXPECT_TRUE(WebRequestPermissions::HideRequest(extension_info_map.get(),
72 &sensitive_request)); 127 &sensitive_request));
73 } 128 }
129
130 TEST_F(ExtensionWebRequestHelpersTestWithThreadsTest,
131 TestCanExtensionAccessURL_HostPermissions) {
132 net::TestURLRequest request(
133 GURL("http://example.com"), NULL, &context, NULL);
134
135 EXPECT_TRUE(WebRequestPermissions::CanExtensionAccessURL(
136 extension_info_map_,
137 permissionless_extension_->id(),
138 request.url(),
139 false /*crosses_incognito*/,
140 WebRequestPermissions::DO_NOT_CHECK_HOST));
141 EXPECT_FALSE(WebRequestPermissions::CanExtensionAccessURL(
142 extension_info_map_,
143 permissionless_extension_->id(),
144 request.url(),
145 false /*crosses_incognito*/,
146 WebRequestPermissions::REQUIRE_HOST_PERMISSION));
147 EXPECT_TRUE(WebRequestPermissions::CanExtensionAccessURL(
148 extension_info_map_,
149 com_extension_->id(),
150 request.url(),
151 false /*crosses_incognito*/,
152 WebRequestPermissions::REQUIRE_HOST_PERMISSION));
153 EXPECT_FALSE(WebRequestPermissions::CanExtensionAccessURL(
154 extension_info_map_,
155 com_extension_->id(),
156 request.url(),
157 false /*crosses_incognito*/,
158 WebRequestPermissions::REQUIRE_ALL_URLS));
159 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698