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

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

Powered by Google App Engine
This is Rietveld 408576698