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

Unified Diff: chrome/browser/browsing_data_database_helper_browsertest.cc

Issue 6246105: Only invoke WebKit methods in browsing data helpers on the WEBKIT thread. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: updates Created 9 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
Index: chrome/browser/browsing_data_database_helper_browsertest.cc
diff --git a/chrome/browser/browsing_data_database_helper_browsertest.cc b/chrome/browser/browsing_data_database_helper_browsertest.cc
index 82b47fb1f81c1b0a9044dc3060baf7a10e16543e..8e6df2cdfd376912eb7e2bc546a3d37477f98539 100644
--- a/chrome/browser/browsing_data_database_helper_browsertest.cc
+++ b/chrome/browser/browsing_data_database_helper_browsertest.cc
@@ -10,11 +10,49 @@
#include "chrome/test/testing_profile.h"
#include "chrome/test/ui_test_utils.h"
+namespace {
static const char kTestIdentifier1[] = "http_www.google.com_0";
static const char kTestIdentifierExtension[] =
"chrome-extension_behllobkkfkfnphdnhnkndlbkcpglgmj_0";
+class TestCompletionCallback {
Bernhard Bauer 2011/02/08 10:49:08 Do you think it would be complicated to pull this
+ public:
+ TestCompletionCallback()
+ : have_result_(false),
+ waiting_for_result_(false) {
+ }
+
+ const std::vector<BrowsingDataDatabaseHelper::DatabaseInfo>& result() {
+ WaitForResult();
+ return result_;
+ }
+
+ void callback(const std::vector<
+ BrowsingDataDatabaseHelper::DatabaseInfo>& info) {
+ have_result_ = true;
+ result_ = info;
+ if (waiting_for_result_)
Bernhard Bauer 2011/02/08 10:49:08 I think this is unnecessary. |MessageLoop::Quit| w
+ MessageLoop::current()->Quit();
+ }
+
+ private:
+ void WaitForResult() {
+ if (!have_result_) {
Bernhard Bauer 2011/02/08 10:49:08 That doesn't make sense now ;-) You should DCHECK
+ waiting_for_result_ = true;
+ MessageLoop::current()->Run();
+ waiting_for_result_ = false;
+ }
+ }
+
+ bool have_result_;
+ bool waiting_for_result_;
+ std::vector<BrowsingDataDatabaseHelper::DatabaseInfo> result_;
+
+ DISALLOW_COPY_AND_ASSIGN(TestCompletionCallback);
+};
+} // namespace
+
class BrowsingDataDatabaseHelperTest : public InProcessBrowserTest {
public:
virtual void CreateDatabases() {
@@ -81,3 +119,56 @@ IN_PROC_BROWSER_TEST_F(BrowsingDataDatabaseHelperTest, FetchData) {
// Blocks until StopTestOnCallback::Callback is notified.
ui_test_utils::RunMessageLoop();
}
+
+IN_PROC_BROWSER_TEST_F(BrowsingDataDatabaseHelperTest, CannedAddDatabase) {
+ const GURL origin1("http://host1:1/");
+ const GURL origin2("http://host2:1/");
+ const char origin_str1[] = "http_host1_1";
+ const char origin_str2[] = "http_host2_1";
+ const char db1[] = "db1";
+ const char db2[] = "db2";
+ const char db3[] = "db3";
+
+ scoped_refptr<CannedBrowsingDataDatabaseHelper> helper(
+ new CannedBrowsingDataDatabaseHelper(&testing_profile_));
+ helper->AddDatabase(origin1, db1, "");
+ helper->AddDatabase(origin1, db2, "");
+ helper->AddDatabase(origin2, db3, "");
+
+ TestCompletionCallback callback;
+ helper->StartFetching(
+ NewCallback(&callback, &TestCompletionCallback::callback));
+
+ std::vector<BrowsingDataDatabaseHelper::DatabaseInfo> result =
+ callback.result();
+
+ ASSERT_EQ(3u, result.size());
+ EXPECT_STREQ(origin_str1, result[0].origin_identifier.c_str());
+ EXPECT_STREQ(db1, result[0].database_name.c_str());
+ EXPECT_STREQ(origin_str1, result[1].origin_identifier.c_str());
+ EXPECT_STREQ(db2, result[1].database_name.c_str());
+ EXPECT_STREQ(origin_str2, result[2].origin_identifier.c_str());
+ EXPECT_STREQ(db3, result[2].database_name.c_str());
+}
+
+IN_PROC_BROWSER_TEST_F(BrowsingDataDatabaseHelperTest, CannedUnique) {
+ const GURL origin("http://host1:1/");
+ const char origin_str[] = "http_host1_1";
+ const char db[] = "db1";
+
+ scoped_refptr<CannedBrowsingDataDatabaseHelper> helper(
+ new CannedBrowsingDataDatabaseHelper(&testing_profile_));
+ helper->AddDatabase(origin, db, "");
+ helper->AddDatabase(origin, db, "");
+
+ TestCompletionCallback callback;
+ helper->StartFetching(
+ NewCallback(&callback, &TestCompletionCallback::callback));
+
+ std::vector<BrowsingDataDatabaseHelper::DatabaseInfo> result =
+ callback.result();
+
+ ASSERT_EQ(1u, result.size());
+ EXPECT_STREQ(origin_str, result[0].origin_identifier.c_str());
+ EXPECT_STREQ(db, result[0].database_name.c_str());
+}

Powered by Google App Engine
This is Rietveld 408576698