| 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..8290b4a6451abbfb0fa5c1a0007e29d9327966f2 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,15 @@ 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.
|
| +// 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();
|
| +}
|
| +
|
| +// 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,
|
| @@ -164,15 +172,30 @@ class WebIntentsConsumer : public WebDataServiceConsumer {
|
| 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() {
|
| + // Result data from completion callback.
|
| + 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 {
|
| + 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()->Run();
|
| + MessageLoop::current()->Quit();
|
| }
|
|
|
| // Result data from completion callback.
|
| - std::vector<WebIntentServiceData> services_;
|
| + std::vector<DefaultWebIntentService> services_;
|
| };
|
|
|
| // Simple consumer for Keywords data. Stores the result data and quits UI
|
| @@ -195,13 +218,6 @@ class KeywordsConsumer : public WebDataServiceConsumer {
|
| 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();
|
| - }
|
| -
|
| // True if keywords data was loaded successfully.
|
| bool load_succeeded;
|
| // Result data from completion callback.
|
| @@ -635,7 +651,7 @@ TEST_F(WebDataServiceTest, WebIntents) {
|
| WebIntentsConsumer consumer;
|
|
|
| wds_->GetWebIntentServices(ASCIIToUTF16("share"), &consumer);
|
| - WebIntentsConsumer::WaitUntilCalled();
|
| + WaitUntilCalled();
|
| EXPECT_EQ(0U, consumer.services_.size());
|
|
|
| WebIntentServiceData service;
|
| @@ -652,7 +668,7 @@ TEST_F(WebDataServiceTest, WebIntents) {
|
| wds_->AddWebIntentService(service);
|
|
|
| wds_->GetWebIntentServices(ASCIIToUTF16("share"), &consumer);
|
| - WebIntentsConsumer::WaitUntilCalled();
|
| + WaitUntilCalled();
|
| ASSERT_EQ(2U, consumer.services_.size());
|
|
|
| if (consumer.services_[0].type != ASCIIToUTF16("image/*"))
|
| @@ -669,7 +685,7 @@ TEST_F(WebDataServiceTest, WebIntents) {
|
| wds_->RemoveWebIntentService(service);
|
|
|
| wds_->GetWebIntentServices(ASCIIToUTF16("share"), &consumer);
|
| - WebIntentsConsumer::WaitUntilCalled();
|
| + WaitUntilCalled();
|
| ASSERT_EQ(1U, consumer.services_.size());
|
|
|
| service.type = ASCIIToUTF16("video/*");
|
| @@ -694,7 +710,7 @@ TEST_F(WebDataServiceTest, WebIntentsForURL) {
|
| wds_->GetWebIntentServicesForURL(
|
| UTF8ToUTF16(service.service_url.spec()),
|
| &consumer);
|
| - WebIntentsConsumer::WaitUntilCalled();
|
| + WaitUntilCalled();
|
| ASSERT_EQ(2U, consumer.services_.size());
|
| EXPECT_EQ(service, consumer.services_[0]);
|
| service.action = ASCIIToUTF16("share1");
|
| @@ -714,7 +730,7 @@ TEST_F(WebDataServiceTest, WebIntentsGetAll) {
|
| wds_->AddWebIntentService(service);
|
|
|
| wds_->GetAllWebIntentServices(&consumer);
|
| - WebIntentsConsumer::WaitUntilCalled();
|
| + WaitUntilCalled();
|
| ASSERT_EQ(2U, consumer.services_.size());
|
|
|
| if (consumer.services_[0].action != ASCIIToUTF16("edit"))
|
| @@ -725,10 +741,56 @@ TEST_F(WebDataServiceTest, WebIntentsGetAll) {
|
| EXPECT_EQ(service, consumer.services_[1]);
|
| }
|
|
|
| +TEST_F(WebDataServiceTest, WebIntentsDefaultsTest) {
|
| + WebIntentsDefaultsConsumer consumer;
|
| +
|
| + wds_->GetDefaultWebIntentServicesForAction(ASCIIToUTF16("share"), &consumer);
|
| + 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);
|
| + WaitUntilCalled();
|
| + ASSERT_EQ(1U, consumer.services_.size());
|
| + EXPECT_EQ("service_url", consumer.services_[0].service_url);
|
| +
|
| + wds_->GetAllDefaultWebIntentServices(&consumer);
|
| + WaitUntilCalled();
|
| + EXPECT_EQ(2U, consumer.services_.size());
|
| +
|
| + default_service.action = ASCIIToUTF16("share");
|
| + wds_->RemoveDefaultWebIntentService(default_service);
|
| +
|
| + wds_->GetDefaultWebIntentServicesForAction(ASCIIToUTF16("share"), &consumer);
|
| + WaitUntilCalled();
|
| + EXPECT_EQ(0U, consumer.services_.size());
|
| +
|
| + wds_->GetDefaultWebIntentServicesForAction(ASCIIToUTF16("share2"), &consumer);
|
| + WaitUntilCalled();
|
| + ASSERT_EQ(1U, consumer.services_.size());
|
| + EXPECT_EQ("service_url_2", consumer.services_[0].service_url);
|
| +
|
| + wds_->GetAllDefaultWebIntentServices(&consumer);
|
| + WaitUntilCalled();
|
| + ASSERT_EQ(1U, consumer.services_.size());
|
| + EXPECT_EQ("service_url_2", consumer.services_[0].service_url);
|
| +}
|
| +
|
| TEST_F(WebDataServiceTest, DidDefaultSearchProviderChangeOnNewProfile) {
|
| KeywordsConsumer consumer;
|
| wds_->GetKeywords(&consumer);
|
| - KeywordsConsumer::WaitUntilCalled();
|
| + WaitUntilCalled();
|
| ASSERT_TRUE(consumer.load_succeeded);
|
| EXPECT_FALSE(consumer.keywords_result.did_default_search_provider_change);
|
| EXPECT_EQ(NULL, consumer.keywords_result.default_search_provider_backup);
|
|
|