Chromium Code Reviews| Index: extensions/browser/api/declarative/rules_registry_unittest.cc |
| diff --git a/extensions/browser/api/declarative/rules_registry_unittest.cc b/extensions/browser/api/declarative/rules_registry_unittest.cc |
| index 33da872a1667d3d6a2db96dacefff7f5c57ea830..82a86788c32431bd17a9981f3b8cf7ce729bf574 100644 |
| --- a/extensions/browser/api/declarative/rules_registry_unittest.cc |
| +++ b/extensions/browser/api/declarative/rules_registry_unittest.cc |
| @@ -7,9 +7,15 @@ |
| #include <algorithm> |
| #include "base/message_loop/message_loop.h" |
| +#include "base/test/values_test_util.h" |
| +#include "base/values.h" |
| #include "content/public/test/test_browser_thread.h" |
| #include "extensions/browser/api/declarative/rules_registry_service.h" |
| #include "extensions/browser/api/declarative/test_rules_registry.h" |
| +#include "extensions/browser/extension_registry.h" |
| +#include "extensions/browser/extensions_test.h" |
| +#include "extensions/common/extension.h" |
| +#include "extensions/common/extension_builder.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| namespace { |
| @@ -20,7 +26,14 @@ const int key = extensions::RulesRegistryService::kDefaultRulesRegistryID; |
| namespace extensions { |
| -TEST(RulesRegistryTest, FillOptionalIdentifiers) { |
| +using base::test::ParseJson; |
| + |
| +class RulesRegistryTest : public ExtensionsTest { |
| + public: |
| + RulesRegistryTest() {} |
|
not at google - send to devlin
2015/06/02 22:44:50
Empty constructor isn't necessary, but this needs
danduong
2015/06/03 00:18:06
Done.
|
| +}; |
| + |
| +TEST_F(RulesRegistryTest, FillOptionalIdentifiers) { |
| base::MessageLoopForUI message_loop; |
| content::TestBrowserThread thread(content::BrowserThread::UI, &message_loop); |
| @@ -129,7 +142,7 @@ TEST(RulesRegistryTest, FillOptionalIdentifiers) { |
| message_loop.RunUntilIdle(); |
| } |
| -TEST(RulesRegistryTest, FillOptionalPriority) { |
| +TEST_F(RulesRegistryTest, FillOptionalPriority) { |
| base::MessageLoopForUI message_loop; |
| content::TestBrowserThread thread(content::BrowserThread::UI, &message_loop); |
| @@ -165,4 +178,51 @@ TEST(RulesRegistryTest, FillOptionalPriority) { |
| message_loop.RunUntilIdle(); |
| } |
| +TEST_F(RulesRegistryTest, ExtensionWithRulesInManifest) { |
|
Mike Wittman
2015/06/02 23:11:59
Can you add tests for handling and reporting of er
|
| + base::MessageLoopForUI message_loop; |
| + content::TestBrowserThread thread(content::BrowserThread::UI, &message_loop); |
| + |
| + // Create extension |
| + scoped_ptr<base::DictionaryValue> manifest( |
| + (base::DictionaryValue*)ParseJson( |
|
not at google - send to devlin
2015/06/02 22:44:50
Use C++ style static_cast<>, not C style cast.
Ho
danduong
2015/06/03 00:18:06
Done.
|
| + "{" |
| + " \"name\" : \"Test\"," |
| + " \"version\" : \"1\"," |
| + " \"declarativeContent\" : {" |
| + " \"onPageChanged\": [" |
| + " {" |
| + " \"actions\": [" |
| + " {" |
| + " \"instanceType\": \"declarativeContent.ShowPageAction\"" |
|
not at google - send to devlin
2015/06/02 22:44:50
This is a bit of an awkward API. Better to try to
danduong
2015/06/03 00:18:06
Where should we specify onPageChanged? How should
not at google - send to devlin
2015/06/03 16:21:44
Oh right, I suppose the event declaration syntax s
danduong
2015/06/03 16:45:53
I don't think that's valid JSON. Do you mean:
"co
|
| + " }" |
| + " ]," |
| + " \"conditions\" : [" |
| + " {" |
| + " \"css\": [\"video\"]," |
| + " \"instanceType\" : " |
| + " \"declarativeContent.PageStateMatcher\"" |
| + " }" |
| + " ]" |
| + " }" |
| + " ]" |
| + " }" |
| + "}").release()); |
| + scoped_refptr<Extension> extension = ExtensionBuilder() |
| + .SetManifest(manifest.Pass()) |
| + .SetID(kExtensionId) |
| + .Build(); |
| + ExtensionRegistry::Get(browser_context())->AddEnabled(extension); |
| + |
| + scoped_refptr<RulesRegistry> registry = new TestRulesRegistry( |
|
Mike Wittman
2015/06/02 23:11:59
I'm not sure why this stored in a scoped_refptr in
not at google - send to devlin
2015/06/02 23:14:40
TestRulesRegistry --> RulesRegistry --> RefCounted
Mike Wittman
2015/06/02 23:16:00
Ah, should have known.
|
| + browser_context(), "declarativeContent.onPageChanged", |
| + content::BrowserThread::UI, NULL, key); |
|
not at google - send to devlin
2015/06/02 22:44:50
nullptr not NULL - though I think that if you remo
danduong
2015/06/03 00:18:06
Done.
|
| + // Simulate what RulesRegistryService would do on extension load. |
| + registry->OnExtensionLoaded(kExtensionId); |
| + |
| + std::vector<linked_ptr<RulesRegistry::Rule>> get_rules; |
| + registry->GetAllRules(kExtensionId, &get_rules); |
| + |
| + ASSERT_EQ(1u, get_rules.size()); |
|
not at google - send to devlin
2015/06/02 22:44:50
Could you assert that this rule matches the one co
danduong
2015/06/03 00:18:06
Done.
|
| +} |
| + |
| } // namespace extensions |