Chromium Code Reviews| Index: chrome/browser/webdata/web_data_service_unittest.cc |
| diff --git a/chrome/browser/webdata/web_data_service_unittest.cc b/chrome/browser/webdata/web_data_service_unittest.cc |
| index b816772820ff23d0812b77fab338c42de46762ab..da67897d82ce940892a58ef4ea9e6b9d07fe8e92 100644 |
| --- a/chrome/browser/webdata/web_data_service_unittest.cc |
| +++ b/chrome/browser/webdata/web_data_service_unittest.cc |
| @@ -19,6 +19,7 @@ |
| #include "base/utf_string_conversions.h" |
| #include "chrome/browser/autofill/autofill_profile.h" |
| #include "chrome/browser/autofill/credit_card.h" |
| +#include "chrome/browser/intents/default_web_intent_service.h" |
| #include "chrome/browser/webdata/autofill_change.h" |
| #include "chrome/browser/webdata/autofill_entry.h" |
| #include "chrome/browser/webdata/web_data_service.h" |
| @@ -146,8 +147,8 @@ class WebDataServiceAutofillTest : public WebDataServiceTest { |
| WaitableEvent done_event_; |
| }; |
| -// Simple consumer for WebIntents data. Stores the result data and quits UI |
| -// message loop when callback is invoked. |
| +// Simple consumer for WebIntents service data. Stores the result data and |
| +// quits UI message loop when callback is invoked. |
| class WebIntentsConsumer : public WebDataServiceConsumer { |
| public: |
| virtual void OnWebDataServiceRequestDone(WebDataService::Handle h, |
| @@ -175,6 +176,35 @@ class WebIntentsConsumer : public WebDataServiceConsumer { |
| std::vector<WebIntentServiceData> services_; |
| }; |
| +// Simple consumer for WebIntents defaults data. Stores the result data and |
| +// quits UI message loop when callback is invoked. |
| +class WebIntentsDefaultsConsumer : public WebDataServiceConsumer { |
|
groby-ooo-7-16
2012/02/16 23:14:38
That's a lot of copy/paste - can we just templatiz
Greg Billock
2012/02/17 01:12:37
This whole file has tons of this parallel structur
groby-ooo-7-16
2012/02/17 02:15:01
At the very least, let's hoist WaitUntilCalled int
Greg Billock
2012/02/17 17:57:00
I like it. Done.
On 2012/02/17 02:15:01, groby wr
|
| + public: |
| + virtual void OnWebDataServiceRequestDone(WebDataService::Handle h, |
| + const WDTypedResult* result) { |
| + services_.clear(); |
| + if (result) { |
| + DCHECK(result->GetType() == WEB_INTENTS_DEFAULTS_RESULT); |
| + services_ = static_cast< |
| + const WDResult<std::vector<DefaultWebIntentService> >*>(result)-> |
| + GetValue(); |
| + } |
| + |
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| + MessageLoop::current()->Quit(); |
| + } |
| + |
| + // Run the current message loop. OnWebDataServiceRequestDone will invoke |
| + // MessageLoop::Quit on completion, so this call will finish at that point. |
| + static void WaitUntilCalled() { |
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| + MessageLoop::current()->Run(); |
| + } |
| + |
| + // Result data from completion callback. |
| + std::vector<DefaultWebIntentService> services_; |
| +}; |
| + |
| // Simple consumer for Keywords data. Stores the result data and quits UI |
| // message loop when callback is invoked. |
| class KeywordsConsumer : public WebDataServiceConsumer { |
| @@ -725,6 +755,52 @@ TEST_F(WebDataServiceTest, WebIntentsGetAll) { |
| EXPECT_EQ(service, consumer.services_[1]); |
| } |
| +TEST_F(WebDataServiceTest, WebIntentsDefaultsTest) { |
| + WebIntentsDefaultsConsumer consumer; |
| + |
| + wds_->GetDefaultWebIntentServicesForAction(ASCIIToUTF16("share"), &consumer); |
| + WebIntentsConsumer::WaitUntilCalled(); |
| + EXPECT_EQ(0U, consumer.services_.size()); |
| + |
| + DefaultWebIntentService default_service; |
| + default_service.action = ASCIIToUTF16("share"); |
| + default_service.type = ASCIIToUTF16("type"); |
| + default_service.user_date = 1; |
| + default_service.suppression = 4; |
| + default_service.service_url = "service_url"; |
| + wds_->AddDefaultWebIntentService(default_service); |
| + |
| + default_service.action = ASCIIToUTF16("share2"); |
| + default_service.service_url = "service_url_2"; |
| + wds_->AddDefaultWebIntentService(default_service); |
| + |
| + wds_->GetDefaultWebIntentServicesForAction(ASCIIToUTF16("share"), &consumer); |
| + WebIntentsDefaultsConsumer::WaitUntilCalled(); |
| + EXPECT_EQ(1U, consumer.services_.size()); |
|
groby-ooo-7-16
2012/02/16 23:14:38
You probably want ASSERT_EQ on the size. If it's 0
Greg Billock
2012/02/17 01:12:37
Done.
|
| + EXPECT_EQ("service_url", consumer.services_[0].service_url); |
| + |
| + wds_->GetAllDefaultWebIntentServices(&consumer); |
| + WebIntentsDefaultsConsumer::WaitUntilCalled(); |
| + EXPECT_EQ(2U, consumer.services_.size()); |
| + |
| + default_service.action = ASCIIToUTF16("share"); |
| + wds_->RemoveDefaultWebIntentService(default_service); |
| + |
| + wds_->GetDefaultWebIntentServicesForAction(ASCIIToUTF16("share"), &consumer); |
| + WebIntentsDefaultsConsumer::WaitUntilCalled(); |
| + EXPECT_EQ(0U, consumer.services_.size()); |
| + |
| + wds_->GetDefaultWebIntentServicesForAction(ASCIIToUTF16("share2"), &consumer); |
| + WebIntentsDefaultsConsumer::WaitUntilCalled(); |
| + EXPECT_EQ(1U, consumer.services_.size()); |
| + EXPECT_EQ("service_url_2", consumer.services_[0].service_url); |
| + |
| + wds_->GetAllDefaultWebIntentServices(&consumer); |
| + WebIntentsDefaultsConsumer::WaitUntilCalled(); |
| + EXPECT_EQ(1U, consumer.services_.size()); |
| + EXPECT_EQ("service_url_2", consumer.services_[0].service_url); |
| +} |
| + |
| TEST_F(WebDataServiceTest, DidDefaultSearchProviderChangeOnNewProfile) { |
| KeywordsConsumer consumer; |
| wds_->GetKeywords(&consumer); |