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

Side by Side Diff: chrome/browser/policy/device_management_service_browsertest.cc

Issue 11293252: Change Interceptors into URLRequestJobFactory::ProtocolHandlers. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 1 month 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 "base/memory/scoped_ptr.h" 5 #include "base/memory/scoped_ptr.h"
6 #include "base/message_loop.h" 6 #include "base/message_loop.h"
7 #include "base/stl_util.h" 7 #include "base/stl_util.h"
8 #include "chrome/browser/policy/cloud_policy_constants.h" 8 #include "chrome/browser/policy/cloud_policy_constants.h"
9 #include "chrome/browser/policy/device_management_service.h" 9 #include "chrome/browser/policy/device_management_service.h"
10 #include "chrome/test/base/in_process_browser_test.h" 10 #include "chrome/test/base/in_process_browser_test.h"
11 #include "content/public/browser/browser_thread.h"
11 #include "net/base/upload_data.h" 12 #include "net/base/upload_data.h"
12 #include "net/test/test_server.h" 13 #include "net/test/test_server.h"
13 #include "net/url_request/url_fetcher.h" 14 #include "net/url_request/url_fetcher.h"
14 #include "net/url_request/url_request.h" 15 #include "net/url_request/url_request.h"
16 #include "net/url_request/url_request_filter.h"
17 #include "net/url_request/url_request_job_factory.h"
15 #include "net/url_request/url_request_test_job.h" 18 #include "net/url_request/url_request_test_job.h"
16 #include "testing/gmock/include/gmock/gmock.h" 19 #include "testing/gmock/include/gmock/gmock.h"
17 #include "testing/gtest/include/gtest/gtest.h" 20 #include "testing/gtest/include/gtest/gtest.h"
18 21
22 using content::BrowserThread;
19 using testing::DoAll; 23 using testing::DoAll;
20 using testing::Invoke; 24 using testing::Invoke;
21 using testing::InvokeWithoutArgs; 25 using testing::InvokeWithoutArgs;
22 using testing::_; 26 using testing::_;
23 27
24 namespace em = enterprise_management; 28 namespace em = enterprise_management;
25 29
26 namespace policy { 30 namespace policy {
27 31
28 // Dummy service URL for testing with request interception enabled. 32 // Dummy service URL for testing with request interception enabled.
29 const char kServiceUrl[] = "http://example.com/device_management"; 33 const char kServiceUrl[] = "http://example.com/device_management";
30 34
31 // Interceptor implementation that returns test data back to the service. 35 // Interceptor implementation that returns test data back to the service.
32 class CannedResponseInterceptor : public net::URLRequest::Interceptor { 36 class CannedResponseInterceptor
37 : public net::URLRequestJobFactory::ProtocolHandler {
33 public: 38 public:
34 explicit CannedResponseInterceptor(const GURL& service_url) 39 explicit CannedResponseInterceptor(const GURL& service_url)
35 : service_url_(service_url) { 40 : service_url_(service_url) {
36 net::URLRequest::Deprecated::RegisterRequestInterceptor(this); 41 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
42 base::Bind(&CannedResponseInterceptor::Register,
43 base::Unretained(this)));
37 } 44 }
38 45
39 virtual ~CannedResponseInterceptor() { 46 virtual ~CannedResponseInterceptor() {
40 net::URLRequest::Deprecated::UnregisterRequestInterceptor(this); 47 BrowserThread::PostTask(BrowserThread::IO,
48 FROM_HERE,
49 base::Bind(Unregister));
41 } 50 }
42 51
43 // net::URLRequest::Interceptor overrides. 52 // net::URLRequestJobFactory::ProtocolHandler overrides.
44 virtual net::URLRequestJob* MaybeIntercept( 53 virtual net::URLRequestJob* MaybeCreateJob(
45 net::URLRequest* request, 54 net::URLRequest* request,
46 net::NetworkDelegate* network_delegate) OVERRIDE { 55 net::NetworkDelegate* network_delegate) const OVERRIDE {
47 em::DeviceManagementRequest dm_request; 56 em::DeviceManagementRequest dm_request;
48 net::UploadData* upload = request->get_upload_mutable(); 57 net::UploadData* upload = request->get_upload_mutable();
49 if (request->url().GetOrigin() == service_url_.GetOrigin() && 58 if (request->url().GetOrigin() == service_url_.GetOrigin() &&
50 request->url().path() == service_url_.path() && 59 request->url().path() == service_url_.path() &&
51 upload != NULL && 60 upload != NULL &&
52 upload->elements().size() == 1) { 61 upload->elements().size() == 1) {
53 std::string response_data; 62 std::string response_data;
54 ConstructResponse(upload->elements()[0]->bytes(), 63 ConstructResponse(upload->elements()[0]->bytes(),
55 upload->elements()[0]->bytes_length(), 64 upload->elements()[0]->bytes_length(),
56 &response_data); 65 &response_data);
57 return new net::URLRequestTestJob(request, 66 return new net::URLRequestTestJob(request,
58 network_delegate, 67 network_delegate,
59 net::URLRequestTestJob::test_headers(), 68 net::URLRequestTestJob::test_headers(),
60 response_data, 69 response_data,
61 true); 70 true);
62 } 71 }
63 72
64 return NULL; 73 return NULL;
65 } 74 }
66 75
67 private: 76 private:
77 void Register() {
78 net::URLRequestFilter::GetInstance()->AddHostnameProtocolHandler(
79 "http", "example.com", this);
80 }
81 static void Unregister() {
82 net::URLRequestFilter::GetInstance()->RemoveHostnameHandler(
83 "http", "example.com");
84 }
68 void ConstructResponse(const char* request_data, 85 void ConstructResponse(const char* request_data,
69 uint64 request_data_length, 86 uint64 request_data_length,
70 std::string* response_data) { 87 std::string* response_data) const {
71 em::DeviceManagementRequest request; 88 em::DeviceManagementRequest request;
72 ASSERT_TRUE(request.ParseFromArray(request_data, request_data_length)); 89 ASSERT_TRUE(request.ParseFromArray(request_data, request_data_length));
73 em::DeviceManagementResponse response; 90 em::DeviceManagementResponse response;
74 if (request.has_register_request()) { 91 if (request.has_register_request()) {
75 response.mutable_register_response()->set_device_management_token( 92 response.mutable_register_response()->set_device_management_token(
76 "fake_token"); 93 "fake_token");
77 } else if (request.has_unregister_request()) { 94 } else if (request.has_unregister_request()) {
78 response.mutable_unregister_response(); 95 response.mutable_unregister_response();
79 } else if (request.has_policy_request()) { 96 } else if (request.has_policy_request()) {
80 response.mutable_policy_response()->add_response(); 97 response.mutable_policy_response()->add_response();
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
210 MessageLoop::current()->Run(); 227 MessageLoop::current()->Run();
211 } 228 }
212 229
213 INSTANTIATE_TEST_CASE_P( 230 INSTANTIATE_TEST_CASE_P(
214 DeviceManagementServiceIntegrationTestInstance, 231 DeviceManagementServiceIntegrationTestInstance,
215 DeviceManagementServiceIntegrationTest, 232 DeviceManagementServiceIntegrationTest,
216 testing::Values(&DeviceManagementServiceIntegrationTest::InitCannedResponse, 233 testing::Values(&DeviceManagementServiceIntegrationTest::InitCannedResponse,
217 &DeviceManagementServiceIntegrationTest::InitTestServer)); 234 &DeviceManagementServiceIntegrationTest::InitTestServer));
218 235
219 } // namespace policy 236 } // namespace policy
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698