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

Unified Diff: chrome/browser/webdata/web_data_service_unittest.cc

Issue 9370043: Add default intents methods for web data service. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Merge to head Created 8 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/webdata/web_data_service.cc ('k') | chrome/browser/webdata/web_intents_table.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
« no previous file with comments | « chrome/browser/webdata/web_data_service.cc ('k') | chrome/browser/webdata/web_intents_table.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698