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

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

Issue 501163002: Make URLRequest's constructor private, and make URLRequestContext a friend class. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Merge? Created 6 years, 3 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
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/memory/scoped_ptr.h"
7 #include "base/message_loop/message_loop.h" 8 #include "base/message_loop/message_loop.h"
8 #include "chrome/common/extensions/extension_constants.h" 9 #include "chrome/common/extensions/extension_constants.h"
9 #include "chrome/common/extensions/extension_test_util.h" 10 #include "chrome/common/extensions/extension_test_util.h"
10 #include "chrome/test/base/testing_profile.h" 11 #include "chrome/test/base/testing_profile.h"
11 #include "content/public/browser/resource_request_info.h" 12 #include "content/public/browser/resource_request_info.h"
12 #include "content/public/test/test_browser_thread_bundle.h" 13 #include "content/public/test/test_browser_thread_bundle.h"
13 #include "extensions/browser/info_map.h" 14 #include "extensions/browser/info_map.h"
14 #include "ipc/ipc_message.h" 15 #include "ipc/ipc_message.h"
15 #include "net/base/request_priority.h" 16 #include "net/base/request_priority.h"
17 #include "net/url_request/url_request.h"
16 #include "net/url_request/url_request_test_util.h" 18 #include "net/url_request/url_request_test_util.h"
17 #include "testing/gtest/include/gtest/gtest.h" 19 #include "testing/gtest/include/gtest/gtest.h"
18 20
19 using content::ResourceRequestInfo; 21 using content::ResourceRequestInfo;
20 using content::ResourceType; 22 using content::ResourceType;
21 using extensions::Extension; 23 using extensions::Extension;
22 using extensions::Manifest; 24 using extensions::Manifest;
23 using extension_test_util::LoadManifestUnchecked; 25 using extension_test_util::LoadManifestUnchecked;
24 26
25 class ExtensionWebRequestHelpersTestWithThreadsTest : public testing::Test { 27 class ExtensionWebRequestHelpersTestWithThreadsTest : public testing::Test {
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
93 }; 95 };
94 const char* non_sensitive_urls[] = { 96 const char* non_sensitive_urls[] = {
95 "http://www.google.com/" 97 "http://www.google.com/"
96 }; 98 };
97 const int kSigninProcessId = 99; 99 const int kSigninProcessId = 99;
98 extension_info_map_->SetSigninProcess(kSigninProcessId); 100 extension_info_map_->SetSigninProcess(kSigninProcessId);
99 101
100 // Check that requests are rejected based on the destination 102 // Check that requests are rejected based on the destination
101 for (size_t i = 0; i < arraysize(sensitive_urls); ++i) { 103 for (size_t i = 0; i < arraysize(sensitive_urls); ++i) {
102 GURL sensitive_url(sensitive_urls[i]); 104 GURL sensitive_url(sensitive_urls[i]);
103 net::TestURLRequest request( 105 scoped_ptr<net::URLRequest> request(context.CreateRequest(
104 sensitive_url, net::DEFAULT_PRIORITY, NULL, &context); 106 sensitive_url, net::DEFAULT_PRIORITY, NULL, NULL));
105 EXPECT_TRUE( 107 EXPECT_TRUE(WebRequestPermissions::HideRequest(
106 WebRequestPermissions::HideRequest(extension_info_map_.get(), &request)) 108 extension_info_map_.get(), request.get())) << sensitive_urls[i];
107 << sensitive_urls[i];
108 } 109 }
109 // Check that requests are accepted if they don't touch sensitive urls. 110 // Check that requests are accepted if they don't touch sensitive urls.
110 for (size_t i = 0; i < arraysize(non_sensitive_urls); ++i) { 111 for (size_t i = 0; i < arraysize(non_sensitive_urls); ++i) {
111 GURL non_sensitive_url(non_sensitive_urls[i]); 112 GURL non_sensitive_url(non_sensitive_urls[i]);
112 net::TestURLRequest request( 113 scoped_ptr<net::URLRequest> request(context.CreateRequest(
113 non_sensitive_url, net::DEFAULT_PRIORITY, NULL, &context); 114 non_sensitive_url, net::DEFAULT_PRIORITY, NULL, NULL));
114 EXPECT_FALSE( 115 EXPECT_FALSE(WebRequestPermissions::HideRequest(
115 WebRequestPermissions::HideRequest(extension_info_map_.get(), &request)) 116 extension_info_map_.get(), request.get())) << non_sensitive_urls[i];
116 << non_sensitive_urls[i];
117 } 117 }
118 118
119 // Check protection of requests originating from the frame showing the Chrome 119 // Check protection of requests originating from the frame showing the Chrome
120 // WebStore. 120 // WebStore.
121 // Normally this request is not protected: 121 // Normally this request is not protected:
122 GURL non_sensitive_url("http://www.google.com/test.js"); 122 GURL non_sensitive_url("http://www.google.com/test.js");
123 net::TestURLRequest non_sensitive_request( 123 scoped_ptr<net::URLRequest> non_sensitive_request(context.CreateRequest(
124 non_sensitive_url, net::DEFAULT_PRIORITY, NULL, &context); 124 non_sensitive_url, net::DEFAULT_PRIORITY, NULL, NULL));
125 EXPECT_FALSE(WebRequestPermissions::HideRequest(extension_info_map_.get(), 125 EXPECT_FALSE(WebRequestPermissions::HideRequest(
126 &non_sensitive_request)); 126 extension_info_map_.get(), non_sensitive_request.get()));
127 // If the origin is labeled by the WebStoreAppId, it becomes protected. 127 // If the origin is labeled by the WebStoreAppId, it becomes protected.
128 { 128 {
129 int process_id = 42; 129 int process_id = 42;
130 int site_instance_id = 23; 130 int site_instance_id = 23;
131 int view_id = 17; 131 int view_id = 17;
132 net::TestURLRequest sensitive_request( 132 scoped_ptr<net::URLRequest> sensitive_request(context.CreateRequest(
133 non_sensitive_url, net::DEFAULT_PRIORITY, NULL, &context); 133 non_sensitive_url, net::DEFAULT_PRIORITY, NULL, NULL));
134 ResourceRequestInfo::AllocateForTesting(&sensitive_request, 134 ResourceRequestInfo::AllocateForTesting(sensitive_request.get(),
135 content::RESOURCE_TYPE_SCRIPT, 135 content::RESOURCE_TYPE_SCRIPT,
136 NULL, 136 NULL,
137 process_id, 137 process_id,
138 view_id, 138 view_id,
139 MSG_ROUTING_NONE, 139 MSG_ROUTING_NONE,
140 false); 140 false);
141 extension_info_map_->RegisterExtensionProcess( 141 extension_info_map_->RegisterExtensionProcess(
142 extension_misc::kWebStoreAppId, process_id, site_instance_id); 142 extension_misc::kWebStoreAppId, process_id, site_instance_id);
143 EXPECT_TRUE(WebRequestPermissions::HideRequest(extension_info_map_.get(), 143 EXPECT_TRUE(WebRequestPermissions::HideRequest(
144 &sensitive_request)); 144 extension_info_map_.get(), sensitive_request.get()));
145 } 145 }
146 // If the process is the signin process, it becomes protected. 146 // If the process is the signin process, it becomes protected.
147 { 147 {
148 int process_id = kSigninProcessId; 148 int process_id = kSigninProcessId;
149 int view_id = 19; 149 int view_id = 19;
150 net::TestURLRequest sensitive_request( 150 scoped_ptr<net::URLRequest> sensitive_request(context.CreateRequest(
151 non_sensitive_url, net::DEFAULT_PRIORITY, NULL, &context); 151 non_sensitive_url, net::DEFAULT_PRIORITY, NULL, NULL));
152 ResourceRequestInfo::AllocateForTesting(&sensitive_request, 152 ResourceRequestInfo::AllocateForTesting(sensitive_request.get(),
153 content::RESOURCE_TYPE_SCRIPT, 153 content::RESOURCE_TYPE_SCRIPT,
154 NULL, 154 NULL,
155 process_id, 155 process_id,
156 view_id, 156 view_id,
157 MSG_ROUTING_NONE, 157 MSG_ROUTING_NONE,
158 false); 158 false);
159 EXPECT_TRUE(WebRequestPermissions::HideRequest(extension_info_map_.get(), 159 EXPECT_TRUE(WebRequestPermissions::HideRequest(
160 &sensitive_request)); 160 extension_info_map_.get(), sensitive_request.get()));
161 } 161 }
162 } 162 }
163 163
164 TEST_F(ExtensionWebRequestHelpersTestWithThreadsTest, 164 TEST_F(ExtensionWebRequestHelpersTestWithThreadsTest,
165 TestCanExtensionAccessURL_HostPermissions) { 165 TestCanExtensionAccessURL_HostPermissions) {
166 net::TestURLRequest request( 166 scoped_ptr<net::URLRequest> request(context.CreateRequest(
167 GURL("http://example.com"), net::DEFAULT_PRIORITY, NULL, &context); 167 GURL("http://example.com"), net::DEFAULT_PRIORITY, NULL, NULL));
168 168
169 EXPECT_TRUE(WebRequestPermissions::CanExtensionAccessURL( 169 EXPECT_TRUE(WebRequestPermissions::CanExtensionAccessURL(
170 extension_info_map_.get(), 170 extension_info_map_.get(),
171 permissionless_extension_->id(), 171 permissionless_extension_->id(),
172 request.url(), 172 request->url(),
173 false /*crosses_incognito*/, 173 false /*crosses_incognito*/,
174 WebRequestPermissions::DO_NOT_CHECK_HOST)); 174 WebRequestPermissions::DO_NOT_CHECK_HOST));
175 EXPECT_FALSE(WebRequestPermissions::CanExtensionAccessURL( 175 EXPECT_FALSE(WebRequestPermissions::CanExtensionAccessURL(
176 extension_info_map_.get(), 176 extension_info_map_.get(),
177 permissionless_extension_->id(), 177 permissionless_extension_->id(),
178 request.url(), 178 request->url(),
179 false /*crosses_incognito*/, 179 false /*crosses_incognito*/,
180 WebRequestPermissions::REQUIRE_HOST_PERMISSION)); 180 WebRequestPermissions::REQUIRE_HOST_PERMISSION));
181 EXPECT_TRUE(WebRequestPermissions::CanExtensionAccessURL( 181 EXPECT_TRUE(WebRequestPermissions::CanExtensionAccessURL(
182 extension_info_map_.get(), 182 extension_info_map_.get(),
183 com_extension_->id(), 183 com_extension_->id(),
184 request.url(), 184 request->url(),
185 false /*crosses_incognito*/, 185 false /*crosses_incognito*/,
186 WebRequestPermissions::REQUIRE_HOST_PERMISSION)); 186 WebRequestPermissions::REQUIRE_HOST_PERMISSION));
187 EXPECT_FALSE(WebRequestPermissions::CanExtensionAccessURL( 187 EXPECT_FALSE(WebRequestPermissions::CanExtensionAccessURL(
188 extension_info_map_.get(), 188 extension_info_map_.get(),
189 com_extension_->id(), 189 com_extension_->id(),
190 request.url(), 190 request->url(),
191 false /*crosses_incognito*/, 191 false /*crosses_incognito*/,
192 WebRequestPermissions::REQUIRE_ALL_URLS)); 192 WebRequestPermissions::REQUIRE_ALL_URLS));
193 } 193 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698