Index: chrome/browser/extensions/menu_manager_unittest.cc |
diff --git a/chrome/browser/extensions/menu_manager_unittest.cc b/chrome/browser/extensions/menu_manager_unittest.cc |
index 546e5214df24abd6dcd5ccba397c2b7a1286510c..7c654efb19deeb52aab21bcc8f97008c2fa9db61 100644 |
--- a/chrome/browser/extensions/menu_manager_unittest.cc |
+++ b/chrome/browser/extensions/menu_manager_unittest.cc |
@@ -189,6 +189,69 @@ TEST_F(MenuManagerTest, ChildFunctions) { |
ASSERT_EQ(0, item2->child_count()); |
} |
+TEST_F(MenuManagerTest, PopulateFromValue) { |
+ Extension* extension = AddExtension("test"); |
+ base::DictionaryValue value; |
+ |
+ bool incognito = true; |
not at google - send to devlin
2012/08/07 02:00:11
have a look at using ValueBuilder (c/c/e/value_bui
chebert
2012/08/13 22:41:52
I don't think it would be more concise, since I us
|
+ value.SetBoolean("incognito", incognito); |
+ value.SetString("string_uid", std::string()); |
+ int type = MenuItem::CHECKBOX; |
+ value.SetInteger("type", type); |
+ std::string title("TITLE"); |
+ value.SetString("title", title); |
+ bool checked = true; |
+ value.SetBoolean("checked", checked); |
+ bool enabled = true; |
+ value.SetBoolean("enabled", enabled); |
+ MenuItem::ContextList contexts; |
+ contexts.Add(MenuItem::PAGE); |
+ contexts.Add(MenuItem::SELECTION); |
+ int context_value = 0; |
+ ASSERT_TRUE(contexts.ToValue()->GetAsInteger(&context_value)); |
+ value.SetInteger("contexts", context_value); |
+ |
+ ListValue* document_url_patterns(new ListValue()); |
+ document_url_patterns->Append( |
+ Value::CreateStringValue("http://www.google.com/*")); |
+ document_url_patterns->Append( |
+ Value::CreateStringValue("http://www.reddit.com/*")); |
+ value.Set("document_url_patterns", document_url_patterns); |
+ |
+ ListValue* target_url_patterns(new ListValue()); |
+ target_url_patterns->Append( |
+ Value::CreateStringValue("http://www.yahoo.com/*")); |
+ target_url_patterns->Append( |
+ Value::CreateStringValue("http://www.facebook.com/*")); |
+ value.Set("target_url_patterns", target_url_patterns); |
+ |
+ std::string error; |
+ scoped_ptr<MenuItem> item(MenuItem::Populate(extension->id(), value, &error)); |
+ ASSERT_TRUE(item.get()); |
+ |
+ EXPECT_EQ(extension->id(), item->extension_id()); |
+ EXPECT_EQ(incognito, item->incognito()); |
+ EXPECT_EQ(title, item->title()); |
+ EXPECT_EQ(checked, item->checked()); |
+ EXPECT_EQ(item->checked(), item->checked()); |
+ EXPECT_EQ(enabled, item->enabled()); |
+ EXPECT_EQ(contexts, item->contexts()); |
+ |
+ URLPatternSet document_url_pattern_set; |
+ document_url_pattern_set.Populate(*document_url_patterns, |
+ URLPattern::SCHEME_ALL, |
+ true, |
+ &error); |
+ EXPECT_EQ(document_url_pattern_set, item->document_url_patterns()); |
+ |
+ URLPatternSet target_url_pattern_set; |
+ target_url_pattern_set.Populate(*target_url_patterns, |
+ URLPattern::SCHEME_ALL, |
+ true, |
+ &error); |
+ EXPECT_EQ(target_url_pattern_set, item->target_url_patterns()); |
+} |
+ |
// Tests that deleting a parent properly removes descendants. |
TEST_F(MenuManagerTest, DeleteParent) { |
Extension* extension = AddExtension("1111"); |