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

Side by Side Diff: chrome/browser/history/web_history_service_unittest.cc

Issue 889553003: Revert of Componentize WebHistoryService (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Mon Feb 2 15:10:48 PST 2015 Created 5 years, 10 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "components/history/core/browser/web_history_service.h" 5 #include "chrome/browser/history/web_history_service.h"
6 6
7 #include "base/memory/scoped_ptr.h" 7 #include "base/memory/scoped_ptr.h"
8 #include "base/run_loop.h" 8 #include "base/run_loop.h"
9 #include "chrome/browser/history/web_history_service_factory.h" 9 #include "chrome/browser/history/web_history_service_factory.h"
10 #include "chrome/browser/signin/profile_oauth2_token_service_factory.h"
11 #include "chrome/browser/signin/signin_manager_factory.h"
12 #include "chrome/browser/sync/profile_sync_service.h" 10 #include "chrome/browser/sync/profile_sync_service.h"
13 #include "chrome/browser/sync/profile_sync_service_factory.h" 11 #include "chrome/browser/sync/profile_sync_service_factory.h"
14 #include "chrome/browser/sync/profile_sync_service_mock.h" 12 #include "chrome/browser/sync/profile_sync_service_mock.h"
15 #include "chrome/test/base/testing_profile.h" 13 #include "chrome/test/base/testing_profile.h"
16 #include "components/signin/core/browser/profile_oauth2_token_service.h"
17 #include "components/signin/core/browser/signin_manager.h"
18 #include "content/public/test/test_browser_thread_bundle.h" 14 #include "content/public/test/test_browser_thread_bundle.h"
19 #include "net/http/http_status_code.h" 15 #include "net/http/http_status_code.h"
20 #include "net/url_request/url_request_context_getter.h"
21 #include "testing/gmock/include/gmock/gmock.h" 16 #include "testing/gmock/include/gmock/gmock.h"
22 #include "testing/gtest/include/gtest/gtest.h" 17 #include "testing/gtest/include/gtest/gtest.h"
23 18
24 using history::WebHistoryService; 19 using history::WebHistoryService;
25 using ::testing::Return; 20 using ::testing::Return;
26 21
27 namespace { 22 namespace {
28 23
29 // A testing web history service that does extra checks and creates a 24 // A testing web history service that does extra checks and creates a
30 // TestRequest instead of a normal request. 25 // TestRequest instead of a normal request.
31 class TestingWebHistoryService : public WebHistoryService { 26 class TestingWebHistoryService : public WebHistoryService {
32 public: 27 public:
33 explicit TestingWebHistoryService( 28 explicit TestingWebHistoryService(Profile* profile)
34 ProfileOAuth2TokenService* token_service, 29 : WebHistoryService(profile),
35 SigninManagerBase* signin_manager, 30 profile_(profile),
36 const scoped_refptr<net::URLRequestContextGetter>& request_context) 31 expected_url_(GURL()),
37 : WebHistoryService(token_service, signin_manager, request_context), 32 expected_audio_history_value_(false),
38 expected_url_(GURL()), 33 current_expected_post_data_("") {
39 expected_audio_history_value_(false), 34 }
40 current_expected_post_data_("") {}
41 ~TestingWebHistoryService() override {} 35 ~TestingWebHistoryService() override {}
42 36
43 WebHistoryService::Request* CreateRequest( 37 WebHistoryService::Request* CreateRequest(
44 const GURL& url, const CompletionCallback& callback) override; 38 const GURL& url, const CompletionCallback& callback) override;
45 39
46 // This is sorta an override but override and static don't mix. 40 // This is sorta an override but override and static don't mix.
47 // This function just calls WebHistoryService::ReadResponse. 41 // This function just calls WebHistoryService::ReadResponse.
48 static scoped_ptr<base::DictionaryValue> ReadResponse( 42 static scoped_ptr<base::DictionaryValue> ReadResponse(
49 Request* request); 43 Request* request);
50 44
(...skipping 17 matching lines...) Expand all
68 62
69 void SetExpectedPostData(const std::string& expected_data) { 63 void SetExpectedPostData(const std::string& expected_data) {
70 current_expected_post_data_= expected_data; 64 current_expected_post_data_= expected_data;
71 } 65 }
72 66
73 void EnsureNoPendingRequestsRemain() { 67 void EnsureNoPendingRequestsRemain() {
74 EXPECT_EQ(0u, GetNumberOfPendingAudioHistoryRequests()); 68 EXPECT_EQ(0u, GetNumberOfPendingAudioHistoryRequests());
75 } 69 }
76 70
77 private: 71 private:
72 Profile* profile_;
78 GURL expected_url_; 73 GURL expected_url_;
79 bool expected_audio_history_value_; 74 bool expected_audio_history_value_;
80 std::string current_expected_post_data_; 75 std::string current_expected_post_data_;
81 std::map<Request*, std::string> expected_post_data_; 76 std::map<Request*, std::string> expected_post_data_;
82 77
83 DISALLOW_COPY_AND_ASSIGN(TestingWebHistoryService); 78 DISALLOW_COPY_AND_ASSIGN(TestingWebHistoryService);
84 }; 79 };
85 80
86 // A testing request class that allows expected values to be filled in. 81 // A testing request class that allows expected values to be filled in.
87 class TestRequest : public WebHistoryService::Request { 82 class TestRequest : public WebHistoryService::Request {
88 public: 83 public:
89 TestRequest(const GURL& url, 84 TestRequest(Profile* profile,
85 const GURL& url,
90 const WebHistoryService::CompletionCallback& callback, 86 const WebHistoryService::CompletionCallback& callback,
91 int response_code, 87 int response_code,
92 const std::string& response_body) 88 const std::string& response_body)
93 : web_history_service_(nullptr), 89 : profile_(profile),
90 web_history_service_(nullptr),
94 url_(url), 91 url_(url),
95 callback_(callback), 92 callback_(callback),
96 response_code_(response_code), 93 response_code_(response_code),
97 response_body_(response_body), 94 response_body_(response_body),
98 post_data_(""), 95 post_data_(""),
99 is_pending_(false) { 96 is_pending_(false) {
100 } 97 }
101 98
102 TestRequest(const GURL& url, 99 TestRequest(Profile* profile,
100 const GURL& url,
103 const WebHistoryService::CompletionCallback& callback, 101 const WebHistoryService::CompletionCallback& callback,
104 TestingWebHistoryService* web_history_service) 102 TestingWebHistoryService* web_history_service)
105 : web_history_service_(web_history_service), 103 : profile_(profile),
104 web_history_service_(web_history_service),
106 url_(url), 105 url_(url),
107 callback_(callback), 106 callback_(callback),
108 response_code_(net::HTTP_OK), 107 response_code_(net::HTTP_OK),
109 response_body_(""), 108 response_body_(""),
110 post_data_(""), 109 post_data_(""),
111 is_pending_(false) { 110 is_pending_(false) {
112 response_body_ = std::string("{\"history_recording_enabled\":") + 111 response_body_ = std::string("{\"history_recording_enabled\":") +
113 web_history_service->GetExpectedAudioHistoryValue() + 112 web_history_service->GetExpectedAudioHistoryValue() +
114 ("}"); 113 ("}");
115 } 114 }
(...skipping 16 matching lines...) Expand all
132 } 131 }
133 132
134 void MimicReturnFromFetch() { 133 void MimicReturnFromFetch() {
135 // Mimic a successful fetch and return. We don't actually send out a request 134 // Mimic a successful fetch and return. We don't actually send out a request
136 // in unittests. 135 // in unittests.
137 EXPECT_EQ(web_history_service_->GetExpectedPostData(this), post_data_); 136 EXPECT_EQ(web_history_service_->GetExpectedPostData(this), post_data_);
138 callback_.Run(this, true); 137 callback_.Run(this, true);
139 } 138 }
140 139
141 private: 140 private:
141 Profile* profile_;
142 TestingWebHistoryService* web_history_service_; 142 TestingWebHistoryService* web_history_service_;
143 GURL url_; 143 GURL url_;
144 WebHistoryService::CompletionCallback callback_; 144 WebHistoryService::CompletionCallback callback_;
145 int response_code_; 145 int response_code_;
146 std::string response_body_; 146 std::string response_body_;
147 std::string post_data_; 147 std::string post_data_;
148 bool is_pending_; 148 bool is_pending_;
149 149
150 DISALLOW_COPY_AND_ASSIGN(TestRequest); 150 DISALLOW_COPY_AND_ASSIGN(TestRequest);
151 }; 151 };
152 152
153 WebHistoryService::Request* TestingWebHistoryService::CreateRequest( 153 WebHistoryService::Request* TestingWebHistoryService::CreateRequest(
154 const GURL& url, const CompletionCallback& callback) { 154 const GURL& url, const CompletionCallback& callback) {
155 EXPECT_EQ(expected_url_, url); 155 EXPECT_EQ(expected_url_, url);
156 WebHistoryService::Request* request = 156 WebHistoryService::Request* request =
157 new TestRequest(url, callback, this); 157 new TestRequest(profile_, url, callback, this);
158 expected_post_data_[request] = current_expected_post_data_; 158 expected_post_data_[request] = current_expected_post_data_;
159 return request; 159 return request;
160 } 160 }
161 161
162 scoped_ptr<base::DictionaryValue> TestingWebHistoryService::ReadResponse( 162 scoped_ptr<base::DictionaryValue> TestingWebHistoryService::ReadResponse(
163 Request* request) { 163 Request* request) {
164 return WebHistoryService::ReadResponse(request); 164 return WebHistoryService::ReadResponse(request);
165 } 165 }
166 166
167 void TestingWebHistoryService::SetAudioHistoryCallback( 167 void TestingWebHistoryService::SetAudioHistoryCallback(
(...skipping 20 matching lines...) Expand all
188 Request* request) { 188 Request* request) {
189 return expected_post_data_[request]; 189 return expected_post_data_[request];
190 } 190 }
191 191
192 std::string TestingWebHistoryService::GetExpectedAudioHistoryValue() { 192 std::string TestingWebHistoryService::GetExpectedAudioHistoryValue() {
193 if (expected_audio_history_value_) 193 if (expected_audio_history_value_)
194 return "true"; 194 return "true";
195 return "false"; 195 return "false";
196 } 196 }
197 197
198 static KeyedService* BuildWebHistoryService(content::BrowserContext* context) { 198 static KeyedService* BuildWebHistoryService(content::BrowserContext* profile) {
199 Profile* profile = static_cast<Profile*>(context); 199 return new TestingWebHistoryService(static_cast<Profile*>(profile));
200 return new TestingWebHistoryService(
201 ProfileOAuth2TokenServiceFactory::GetForProfile(profile),
202 SigninManagerFactory::GetForProfile(profile),
203 profile->GetRequestContext());
204 } 200 }
205 201
206 } // namespace 202 } // namespace
207 203
208 // A test class used for testing the WebHistoryService class. 204 // A test class used for testing the WebHistoryService class.
209 // In order for WebHistoryService to be valid, we must have a valid 205 // In order for WebHistoryService to be valid, we must have a valid
210 // ProfileSyncService. Using the ProfileSyncServiceMock class allows to 206 // ProfileSyncService. Using the ProfileSyncServiceMock class allows to
211 // assign specific return values as needed to make sure the web history 207 // assign specific return values as needed to make sure the web history
212 // service is available. 208 // service is available.
213 class WebHistoryServiceTest : public testing::Test { 209 class WebHistoryServiceTest : public testing::Test {
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
341 base::Bind(&TestingWebHistoryService::EnsureNoPendingRequestsRemain, 337 base::Bind(&TestingWebHistoryService::EnsureNoPendingRequestsRemain,
342 base::Unretained(web_history_service))); 338 base::Unretained(web_history_service)));
343 } 339 }
344 340
345 TEST_F(WebHistoryServiceTest, VerifyReadResponse) { 341 TEST_F(WebHistoryServiceTest, VerifyReadResponse) {
346 // Test that properly formatted response with good response code returns true 342 // Test that properly formatted response with good response code returns true
347 // as expected. 343 // as expected.
348 WebHistoryService::CompletionCallback completion_callback; 344 WebHistoryService::CompletionCallback completion_callback;
349 scoped_ptr<WebHistoryService::Request> request( 345 scoped_ptr<WebHistoryService::Request> request(
350 new TestRequest( 346 new TestRequest(
347 profile(),
351 GURL("http://history.google.com/"), 348 GURL("http://history.google.com/"),
352 completion_callback, 349 completion_callback,
353 net::HTTP_OK, /* response code */ 350 net::HTTP_OK, /* response code */
354 "{\n" /* response body */ 351 "{\n" /* response body */
355 " \"history_recording_enabled\": true\n" 352 " \"history_recording_enabled\": true\n"
356 "}")); 353 "}"));
357 scoped_ptr<base::DictionaryValue> response_value; 354 scoped_ptr<base::DictionaryValue> response_value;
358 // ReadResponse deletes the request 355 // ReadResponse deletes the request
359 response_value = TestingWebHistoryService::ReadResponse(request.get()); 356 response_value = TestingWebHistoryService::ReadResponse(request.get());
360 bool enabled_value = false; 357 bool enabled_value = false;
361 response_value->GetBoolean("history_recording_enabled", &enabled_value); 358 response_value->GetBoolean("history_recording_enabled", &enabled_value);
362 EXPECT_TRUE(enabled_value); 359 EXPECT_TRUE(enabled_value);
363 360
364 // Test that properly formatted response with good response code returns false 361 // Test that properly formatted response with good response code returns false
365 // as expected. 362 // as expected.
366 scoped_ptr<WebHistoryService::Request> request2( 363 scoped_ptr<WebHistoryService::Request> request2(
367 new TestRequest( 364 new TestRequest(
365 profile(),
368 GURL("http://history.google.com/"), 366 GURL("http://history.google.com/"),
369 completion_callback, 367 completion_callback,
370 net::HTTP_OK, 368 net::HTTP_OK,
371 "{\n" 369 "{\n"
372 " \"history_recording_enabled\": false\n" 370 " \"history_recording_enabled\": false\n"
373 "}")); 371 "}"));
374 scoped_ptr<base::DictionaryValue> response_value2; 372 scoped_ptr<base::DictionaryValue> response_value2;
375 // ReadResponse deletes the request 373 // ReadResponse deletes the request
376 response_value2 = TestingWebHistoryService::ReadResponse(request2.get()); 374 response_value2 = TestingWebHistoryService::ReadResponse(request2.get());
377 enabled_value = true; 375 enabled_value = true;
378 response_value2->GetBoolean("history_recording_enabled", &enabled_value); 376 response_value2->GetBoolean("history_recording_enabled", &enabled_value);
379 EXPECT_FALSE(enabled_value); 377 EXPECT_FALSE(enabled_value);
380 378
381 // Test that a bad response code returns false. 379 // Test that a bad response code returns false.
382 scoped_ptr<WebHistoryService::Request> request3( 380 scoped_ptr<WebHistoryService::Request> request3(
383 new TestRequest( 381 new TestRequest(
382 profile(),
384 GURL("http://history.google.com/"), 383 GURL("http://history.google.com/"),
385 completion_callback, 384 completion_callback,
386 net::HTTP_UNAUTHORIZED, 385 net::HTTP_UNAUTHORIZED,
387 "{\n" 386 "{\n"
388 " \"history_recording_enabled\": true\n" 387 " \"history_recording_enabled\": true\n"
389 "}")); 388 "}"));
390 scoped_ptr<base::DictionaryValue> response_value3; 389 scoped_ptr<base::DictionaryValue> response_value3;
391 // ReadResponse deletes the request 390 // ReadResponse deletes the request
392 response_value3 = TestingWebHistoryService::ReadResponse(request3.get()); 391 response_value3 = TestingWebHistoryService::ReadResponse(request3.get());
393 EXPECT_FALSE(response_value3); 392 EXPECT_FALSE(response_value3);
394 393
395 // Test that improperly formatted response returns false. 394 // Test that improperly formatted response returns false.
396 // Note: we expect to see a warning when running this test similar to 395 // Note: we expect to see a warning when running this test similar to
397 // "Non-JSON response received from history server". 396 // "Non-JSON response received from history server".
398 // This test tests how that situation is handled. 397 // This test tests how that situation is handled.
399 scoped_ptr<WebHistoryService::Request> request4( 398 scoped_ptr<WebHistoryService::Request> request4(
400 new TestRequest( 399 new TestRequest(
400 profile(),
401 GURL("http://history.google.com/"), 401 GURL("http://history.google.com/"),
402 completion_callback, 402 completion_callback,
403 net::HTTP_OK, 403 net::HTTP_OK,
404 "{\n" 404 "{\n"
405 " \"history_recording_enabled\": not true\n" 405 " \"history_recording_enabled\": not true\n"
406 "}")); 406 "}"));
407 scoped_ptr<base::DictionaryValue> response_value4; 407 scoped_ptr<base::DictionaryValue> response_value4;
408 // ReadResponse deletes the request 408 // ReadResponse deletes the request
409 response_value4 = TestingWebHistoryService::ReadResponse(request4.get()); 409 response_value4 = TestingWebHistoryService::ReadResponse(request4.get());
410 EXPECT_FALSE(response_value4); 410 EXPECT_FALSE(response_value4);
411 411
412 // Test that improperly formatted response returns false. 412 // Test that improperly formatted response returns false.
413 scoped_ptr<WebHistoryService::Request> request5( 413 scoped_ptr<WebHistoryService::Request> request5(
414 new TestRequest( 414 new TestRequest(
415 profile(),
415 GURL("http://history.google.com/"), 416 GURL("http://history.google.com/"),
416 completion_callback, 417 completion_callback,
417 net::HTTP_OK, 418 net::HTTP_OK,
418 "{\n" 419 "{\n"
419 " \"history_recording\": true\n" 420 " \"history_recording\": true\n"
420 "}")); 421 "}"));
421 scoped_ptr<base::DictionaryValue> response_value5; 422 scoped_ptr<base::DictionaryValue> response_value5;
422 // ReadResponse deletes the request 423 // ReadResponse deletes the request
423 response_value5 = TestingWebHistoryService::ReadResponse(request5.get()); 424 response_value5 = TestingWebHistoryService::ReadResponse(request5.get());
424 enabled_value = true; 425 enabled_value = true;
425 EXPECT_FALSE(response_value5->GetBoolean("history_recording_enabled", 426 EXPECT_FALSE(response_value5->GetBoolean("history_recording_enabled",
426 &enabled_value)); 427 &enabled_value));
427 EXPECT_TRUE(enabled_value); 428 EXPECT_TRUE(enabled_value);
428 } 429 }
OLDNEW
« no previous file with comments | « chrome/browser/history/web_history_service_factory.cc ('k') | chrome/browser/search/hotword_audio_history_handler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698