Index: extensions/browser/runtime_data_unittest.cc |
diff --git a/extensions/browser/runtime_data_unittest.cc b/extensions/browser/runtime_data_unittest.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..207f8aa9e0a2de95fed348221640bd9c2953297f |
--- /dev/null |
+++ b/extensions/browser/runtime_data_unittest.cc |
@@ -0,0 +1,108 @@ |
+// Copyright 2014 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "extensions/browser/runtime_data.h" |
+ |
+#include <string> |
+ |
+#include "base/memory/ref_counted.h" |
+#include "extensions/browser/extension_registry.h" |
+#include "extensions/common/extension.h" |
+#include "extensions/common/extension_builder.h" |
+#include "extensions/common/value_builder.h" |
+#include "testing/gtest/include/gtest/gtest.h" |
+ |
+namespace extensions { |
+namespace { |
+ |
+// Creates a very simple extension. |
+scoped_refptr<Extension> CreateExtension() { |
+ return ExtensionBuilder() |
+ .SetManifest( |
+ DictionaryBuilder().Set("name", "test").Set("version", "0.1")) |
+ .SetID("id1") |
+ .Build(); |
+} |
+ |
+// Creates a very simple extension with a background page. |
+scoped_refptr<Extension> CreateExtensionWithBackgroundPage() { |
+ return ExtensionBuilder() |
+ .SetManifest( |
+ DictionaryBuilder() |
+ .Set("name", "test") |
+ .Set("version", "0.1") |
+ .Set("background", DictionaryBuilder().Set("page", "bg.html"))) |
+ .SetID("id2") |
+ .Build(); |
+} |
+ |
+class RuntimeDataTest : public testing::Test { |
+ public: |
+ RuntimeDataTest() : runtime_data_(®istry_) {} |
+ virtual ~RuntimeDataTest() {} |
+ |
+ protected: |
+ ExtensionRegistry registry_; |
+ RuntimeData runtime_data_; |
+ |
+ private: |
+ DISALLOW_COPY_AND_ASSIGN(RuntimeDataTest); |
+}; |
+ |
+TEST_F(RuntimeDataTest, IsBackgroundPageReady) { |
+ // An extension without a background page is always considered ready. |
+ scoped_refptr<Extension> no_background = CreateExtension(); |
+ EXPECT_TRUE(runtime_data_.IsBackgroundPageReady(no_background)); |
+ |
+ // An extension with a background page is not ready until the flag is set. |
+ scoped_refptr<Extension> with_background = |
+ CreateExtensionWithBackgroundPage(); |
+ EXPECT_FALSE(runtime_data_.IsBackgroundPageReady(with_background)); |
+ |
+ // The flag can be toggled. |
+ runtime_data_.SetBackgroundPageReady(with_background, true); |
+ EXPECT_TRUE(runtime_data_.IsBackgroundPageReady(with_background)); |
+ runtime_data_.SetBackgroundPageReady(with_background, false); |
+ EXPECT_FALSE(runtime_data_.IsBackgroundPageReady(with_background)); |
+} |
+ |
+TEST_F(RuntimeDataTest, IsBeingUpgraded) { |
+ scoped_refptr<Extension> extension = CreateExtension(); |
+ |
+ // An extension is not being upgraded until the flag is set. |
+ EXPECT_FALSE(runtime_data_.IsBeingUpgraded(extension)); |
+ |
+ // The flag can be toggled. |
+ runtime_data_.SetBeingUpgraded(extension, true); |
+ EXPECT_TRUE(runtime_data_.IsBeingUpgraded(extension)); |
+ runtime_data_.SetBeingUpgraded(extension, false); |
+ EXPECT_FALSE(runtime_data_.IsBeingUpgraded(extension)); |
+} |
+ |
+// TODO(mpcomplete): Remove. http://crbug.com/100411 |
+TEST_F(RuntimeDataTest, HasUsedWebRequest) { |
+ scoped_refptr<Extension> extension = CreateExtension(); |
+ |
+ // An extension has not used web request until the flag is set. |
+ EXPECT_FALSE(runtime_data_.HasUsedWebRequest(extension)); |
+ |
+ // The flag can be toggled. |
+ runtime_data_.SetHasUsedWebRequest(extension, true); |
+ EXPECT_TRUE(runtime_data_.HasUsedWebRequest(extension)); |
+ runtime_data_.SetHasUsedWebRequest(extension, false); |
+ EXPECT_FALSE(runtime_data_.HasUsedWebRequest(extension)); |
+} |
+ |
+// Unloading an extension stops tracking it. |
+TEST_F(RuntimeDataTest, OnExtensionUnloaded) { |
+ scoped_refptr<Extension> extension = CreateExtensionWithBackgroundPage(); |
+ runtime_data_.SetBackgroundPageReady(extension, true); |
+ ASSERT_TRUE(runtime_data_.HasExtensionForTesting(extension)); |
+ |
+ runtime_data_.OnExtensionUnloaded(extension); |
+ EXPECT_FALSE(runtime_data_.HasExtensionForTesting(extension)); |
+} |
+ |
+} // namespace |
+} // namespace extensions |