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

Unified Diff: chrome/browser/extensions/settings/settings_apitest.cc

Issue 8670012: Extension Settings API: move the API functions into an object SettingsNamepace, (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix bug / sync Created 9 years, 1 month 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/extensions/settings/settings_apitest.cc
diff --git a/chrome/browser/extensions/settings/settings_apitest.cc b/chrome/browser/extensions/settings/settings_apitest.cc
index 2d99f85c1f821e44adb948eae47836a1d0d8a3a2..093930ee818f899c1f1ad08261aa2c3c64be0c37 100644
--- a/chrome/browser/extensions/settings/settings_apitest.cc
+++ b/chrome/browser/extensions/settings/settings_apitest.cc
@@ -8,6 +8,7 @@
#include "chrome/browser/extensions/extension_apitest.h"
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/extensions/settings/settings_frontend.h"
+#include "chrome/browser/extensions/settings/settings_namespace.h"
#include "chrome/browser/extensions/settings/settings_sync_util.h"
#include "chrome/browser/extensions/extension_test_message_listener.h"
#include "chrome/browser/profiles/profile.h"
@@ -19,6 +20,8 @@
namespace extensions {
+using namespace settings_namespace;
+
namespace {
class NoopSyncChangeProcessor : public SyncChangeProcessor {
@@ -37,24 +40,32 @@ class NoopSyncChangeProcessor : public SyncChangeProcessor {
class ExtensionSettingsApiTest : public ExtensionApiTest {
protected:
void ReplyWhenSatisfied(
+ Namespace settings_namespace,
const std::string& normal_action,
const std::string& incognito_action) {
MaybeLoadAndReplyWhenSatisfied(
- normal_action, incognito_action, NULL, false);
+ settings_namespace, normal_action, incognito_action, NULL, false);
}
const Extension* LoadAndReplyWhenSatisfied(
+ Namespace settings_namespace,
const std::string& normal_action,
const std::string& incognito_action,
const std::string& extension_dir) {
return MaybeLoadAndReplyWhenSatisfied(
- normal_action, incognito_action, &extension_dir, false);
+ settings_namespace,
+ normal_action,
+ incognito_action,
+ &extension_dir,
+ false);
}
void FinalReplyWhenSatisfied(
+ Namespace settings_namespace,
const std::string& normal_action,
const std::string& incognito_action) {
- MaybeLoadAndReplyWhenSatisfied(normal_action, incognito_action, NULL, true);
+ MaybeLoadAndReplyWhenSatisfied(
+ settings_namespace, normal_action, incognito_action, NULL, true);
}
void InitSync(SyncChangeProcessor* sync_processor) {
@@ -83,6 +94,7 @@ class ExtensionSettingsApiTest : public ExtensionApiTest {
private:
const Extension* MaybeLoadAndReplyWhenSatisfied(
+ Namespace settings_namespace,
const std::string& normal_action,
const std::string& incognito_action,
// May be NULL to imply not loading the extension.
@@ -103,13 +115,19 @@ class ExtensionSettingsApiTest : public ExtensionApiTest {
EXPECT_TRUE(listener.WaitUntilSatisfied());
EXPECT_TRUE(listener_incognito.WaitUntilSatisfied());
- listener.Reply(CreateMessage(normal_action, is_final_action));
- listener_incognito.Reply(CreateMessage(incognito_action, is_final_action));
+ listener.Reply(
+ CreateMessage(settings_namespace, normal_action, is_final_action));
+ listener_incognito.Reply(
+ CreateMessage(settings_namespace, incognito_action, is_final_action));
return extension;
}
- std::string CreateMessage(const std::string& action, bool is_final_action) {
+ std::string CreateMessage(
+ Namespace settings_namespace,
+ const std::string& action,
+ bool is_final_action) {
scoped_ptr<DictionaryValue> message(new DictionaryValue());
+ message->SetString("namespace", ToString(settings_namespace));
message->SetString("action", action);
message->SetBoolean("isFinalAction", is_final_action);
std::string message_json;
@@ -153,15 +171,16 @@ IN_PROC_BROWSER_TEST_F(ExtensionSettingsApiTest, SplitModeIncognito) {
catcher_incognito.RestrictToProfile(
browser()->profile()->GetOffTheRecordProfile());
- LoadAndReplyWhenSatisfied("assertEmpty", "assertEmpty", "split_incognito");
- ReplyWhenSatisfied("noop", "setFoo");
- ReplyWhenSatisfied("assertFoo", "assertFoo");
- ReplyWhenSatisfied("clear", "noop");
- ReplyWhenSatisfied("assertEmpty", "assertEmpty");
- ReplyWhenSatisfied("setFoo", "noop");
- ReplyWhenSatisfied("assertFoo", "assertFoo");
- ReplyWhenSatisfied("noop", "removeFoo");
- FinalReplyWhenSatisfied("assertEmpty", "assertEmpty");
+ LoadAndReplyWhenSatisfied(SYNC,
+ "assertEmpty", "assertEmpty", "split_incognito");
+ ReplyWhenSatisfied(SYNC, "noop", "setFoo");
+ ReplyWhenSatisfied(SYNC, "assertFoo", "assertFoo");
+ ReplyWhenSatisfied(SYNC, "clear", "noop");
+ ReplyWhenSatisfied(SYNC, "assertEmpty", "assertEmpty");
+ ReplyWhenSatisfied(SYNC, "setFoo", "noop");
+ ReplyWhenSatisfied(SYNC, "assertFoo", "assertFoo");
+ ReplyWhenSatisfied(SYNC, "noop", "removeFoo");
+ FinalReplyWhenSatisfied(SYNC, "assertEmpty", "assertEmpty");
EXPECT_TRUE(catcher.GetNextResult()) << catcher.message();
EXPECT_TRUE(catcher_incognito.GetNextResult()) << catcher.message();
@@ -179,14 +198,68 @@ IN_PROC_BROWSER_TEST_F(ExtensionSettingsApiTest,
catcher_incognito.RestrictToProfile(
browser()->profile()->GetOffTheRecordProfile());
- LoadAndReplyWhenSatisfied(
+ LoadAndReplyWhenSatisfied(SYNC,
+ "assertNoNotifications", "assertNoNotifications", "split_incognito");
+ ReplyWhenSatisfied(SYNC, "noop", "setFoo");
+ ReplyWhenSatisfied(SYNC,
+ "assertAddFooNotification", "assertAddFooNotification");
+ ReplyWhenSatisfied(SYNC, "clearNotifications", "clearNotifications");
+ ReplyWhenSatisfied(SYNC, "removeFoo", "noop");
+ FinalReplyWhenSatisfied(SYNC,
+ "assertDeleteFooNotification", "assertDeleteFooNotification");
+
+ EXPECT_TRUE(catcher.GetNextResult()) << catcher.message();
+ EXPECT_TRUE(catcher_incognito.GetNextResult()) << catcher.message();
+}
+
+IN_PROC_BROWSER_TEST_F(ExtensionSettingsApiTest,
+ SyncAndLocalAreasAreSeparate) {
+ CommandLine::ForCurrentProcess()->AppendSwitch(
+ switches::kEnableExperimentalExtensionApis);
+
+ // We need 2 ResultCatchers because we'll be running the same test in both
+ // regular and incognito mode.
+ ResultCatcher catcher, catcher_incognito;
+ catcher.RestrictToProfile(browser()->profile());
+ catcher_incognito.RestrictToProfile(
+ browser()->profile()->GetOffTheRecordProfile());
+
+ LoadAndReplyWhenSatisfied(SYNC,
"assertNoNotifications", "assertNoNotifications", "split_incognito");
- ReplyWhenSatisfied("noop", "setFoo");
- ReplyWhenSatisfied("assertAddFooNotification", "assertAddFooNotification");
- ReplyWhenSatisfied("clearNotifications", "clearNotifications");
- ReplyWhenSatisfied("removeFoo", "noop");
- FinalReplyWhenSatisfied(
+
+ ReplyWhenSatisfied(SYNC, "noop", "setFoo");
+ ReplyWhenSatisfied(SYNC, "assertFoo", "assertFoo");
+ ReplyWhenSatisfied(SYNC,
+ "assertAddFooNotification", "assertAddFooNotification");
+ ReplyWhenSatisfied(LOCAL, "assertEmpty", "assertEmpty");
+ ReplyWhenSatisfied(LOCAL, "assertNoNotifications", "assertNoNotifications");
+
+ ReplyWhenSatisfied(SYNC, "clearNotifications", "clearNotifications");
+
+ ReplyWhenSatisfied(LOCAL, "setFoo", "noop");
+ ReplyWhenSatisfied(LOCAL, "assertFoo", "assertFoo");
+ ReplyWhenSatisfied(LOCAL,
+ "assertAddFooNotification", "assertAddFooNotification");
+ ReplyWhenSatisfied(SYNC, "assertFoo", "assertFoo");
+ ReplyWhenSatisfied(SYNC, "assertNoNotifications", "assertNoNotifications");
+
+ ReplyWhenSatisfied(LOCAL, "clearNotifications", "clearNotifications");
+
+ ReplyWhenSatisfied(LOCAL, "noop", "removeFoo");
+ ReplyWhenSatisfied(LOCAL, "assertEmpty", "assertEmpty");
+ ReplyWhenSatisfied(LOCAL,
"assertDeleteFooNotification", "assertDeleteFooNotification");
+ ReplyWhenSatisfied(SYNC, "assertFoo", "assertFoo");
+ ReplyWhenSatisfied(SYNC, "assertNoNotifications", "assertNoNotifications");
+
+ ReplyWhenSatisfied(LOCAL, "clearNotifications", "clearNotifications");
+
+ ReplyWhenSatisfied(SYNC, "removeFoo", "noop");
+ ReplyWhenSatisfied(SYNC, "assertEmpty", "assertEmpty");
+ ReplyWhenSatisfied(SYNC,
+ "assertDeleteFooNotification", "assertDeleteFooNotification");
+ ReplyWhenSatisfied(LOCAL, "assertNoNotifications", "assertNoNotifications");
+ FinalReplyWhenSatisfied(LOCAL, "assertEmpty", "assertEmpty");
EXPECT_TRUE(catcher.GetNextResult()) << catcher.message();
EXPECT_TRUE(catcher_incognito.GetNextResult()) << catcher.message();
@@ -206,7 +279,7 @@ IN_PROC_BROWSER_TEST_F(ExtensionSettingsApiTest,
browser()->profile()->GetOffTheRecordProfile());
const Extension* extension =
- LoadAndReplyWhenSatisfied(
+ LoadAndReplyWhenSatisfied(SYNC,
"assertNoNotifications", "assertNoNotifications", "split_incognito");
const std::string& extension_id = extension->id();
@@ -220,8 +293,9 @@ IN_PROC_BROWSER_TEST_F(ExtensionSettingsApiTest,
extension_id, "foo", bar));
SendChanges(sync_changes);
- ReplyWhenSatisfied("assertAddFooNotification", "assertAddFooNotification");
- ReplyWhenSatisfied("clearNotifications", "clearNotifications");
+ ReplyWhenSatisfied(SYNC,
+ "assertAddFooNotification", "assertAddFooNotification");
+ ReplyWhenSatisfied(SYNC, "clearNotifications", "clearNotifications");
// Remove "foo" via sync.
sync_changes.clear();
@@ -229,11 +303,57 @@ IN_PROC_BROWSER_TEST_F(ExtensionSettingsApiTest,
extension_id, "foo"));
SendChanges(sync_changes);
- FinalReplyWhenSatisfied(
+ FinalReplyWhenSatisfied(SYNC,
"assertDeleteFooNotification", "assertDeleteFooNotification");
EXPECT_TRUE(catcher.GetNextResult()) << catcher.message();
EXPECT_TRUE(catcher_incognito.GetNextResult()) << catcher.message();
}
+// Disabled, see crbug.com/101110
+//
+// TODO: boring test, already done in the unit tests. What we really should be
+// be testing is that the areas don't overlap.
+IN_PROC_BROWSER_TEST_F(ExtensionSettingsApiTest,
+ DISABLED_OnChangedNotificationsFromSyncNotSentToLocal) {
+ CommandLine::ForCurrentProcess()->AppendSwitch(
+ switches::kEnableExperimentalExtensionApis);
+
+ // We need 2 ResultCatchers because we'll be running the same test in both
+ // regular and incognito mode.
+ ResultCatcher catcher, catcher_incognito;
+ catcher.RestrictToProfile(browser()->profile());
+ catcher_incognito.RestrictToProfile(
+ browser()->profile()->GetOffTheRecordProfile());
+
+ const Extension* extension =
+ LoadAndReplyWhenSatisfied(LOCAL,
+ "assertNoNotifications", "assertNoNotifications", "split_incognito");
+ const std::string& extension_id = extension->id();
+
+ NoopSyncChangeProcessor sync_processor;
+ InitSync(&sync_processor);
+
+ // Set "foo" to "bar" via sync.
+ SyncChangeList sync_changes;
+ StringValue bar("bar");
+ sync_changes.push_back(settings_sync_util::CreateAdd(
+ extension_id, "foo", bar));
+ SendChanges(sync_changes);
+
+ ReplyWhenSatisfied(LOCAL, "assertNoNotifications", "assertNoNotifications");
+
+ // Remove "foo" via sync.
+ sync_changes.clear();
+ sync_changes.push_back(settings_sync_util::CreateDelete(
+ extension_id, "foo"));
+ SendChanges(sync_changes);
+
+ FinalReplyWhenSatisfied(LOCAL,
+ "assertNoNotifications", "assertNoNotifications");
+
+ EXPECT_TRUE(catcher.GetNextResult()) << catcher.message();
+ EXPECT_TRUE(catcher_incognito.GetNextResult()) << catcher.message();
+}
+
} // namespace extensions
« no previous file with comments | « chrome/browser/extensions/settings/settings_api.cc ('k') | chrome/browser/extensions/settings/settings_backend.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698