Index: extensions/browser/process_map_unittest.cc |
diff --git a/extensions/browser/process_map_unittest.cc b/extensions/browser/process_map_unittest.cc |
index 5512f75043ada137bb77e431c4dfe810f187422b..cffd96c0fc7d8cf8a6d8d9e138be2bb1c5e2b4f0 100644 |
--- a/extensions/browser/process_map_unittest.cc |
+++ b/extensions/browser/process_map_unittest.cc |
@@ -4,8 +4,64 @@ |
#include "extensions/browser/process_map.h" |
+#include "base/memory/ref_counted.h" |
+#include "base/values.h" |
+#include "extensions/common/extension.h" |
+#include "extensions/common/extension_builder.h" |
+#include "extensions/common/features/feature.h" |
+#include "extensions/common/value_builder.h" |
#include "testing/gtest/include/gtest/gtest.h" |
+namespace extensions { |
+namespace { |
+ |
+enum class TypeToCreate { kExtension, kHostedApp, kPlatformApp }; |
+ |
+scoped_refptr<const Extension> CreateExtensionWithFlags(TypeToCreate type, |
+ const std::string& id) { |
+ DictionaryBuilder manifest_builder; |
+ manifest_builder.Set("name", "Test extension") |
+ .Set("version", "1.0") |
+ .Set("manifest_version", 2); |
+ |
+ switch (type) { |
+ case TypeToCreate::kExtension: |
+ manifest_builder.Set( |
+ "background", |
+ DictionaryBuilder() |
+ .Set("scripts", ListBuilder().Append("background.js").Build()) |
+ .Build()); |
+ break; |
+ case TypeToCreate::kHostedApp: |
+ manifest_builder.Set( |
+ "app", DictionaryBuilder() |
+ .Set("launch", DictionaryBuilder() |
+ .Set("web_url", "https://www.foo.bar") |
+ .Build()) |
+ .Build()); |
+ break; |
+ case TypeToCreate::kPlatformApp: |
+ manifest_builder.Set( |
+ "app", |
+ DictionaryBuilder() |
+ .Set("background", |
+ DictionaryBuilder() |
+ .Set("scripts", |
+ ListBuilder().Append("background.js").Build()) |
+ .Build()) |
+ .Build()); |
+ break; |
+ } |
+ |
+ return ExtensionBuilder() |
+ .SetID(id) |
+ .SetManifest(manifest_builder.Build()) |
+ .Build(); |
+} |
+ |
+} // namespace |
+} // namespace extensions |
+ |
using extensions::ProcessMap; |
TEST(ExtensionProcessMapTest, Test) { |
@@ -63,3 +119,48 @@ TEST(ExtensionProcessMapTest, Test) { |
EXPECT_EQ(0, map.RemoveAllFromProcess(2)); |
EXPECT_EQ(1u, map.size()); |
} |
+ |
+TEST(ExtensionProcessMapTest, GetMostLikelyContextType) { |
+ ProcessMap map; |
+ |
+ EXPECT_EQ(extensions::Feature::WEB_PAGE_CONTEXT, |
+ map.GetMostLikelyContextType(nullptr, 1)); |
+ |
+ scoped_refptr<const extensions::Extension> extension = |
+ CreateExtensionWithFlags(extensions::TypeToCreate::kExtension, "a"); |
+ |
+ EXPECT_EQ(extensions::Feature::CONTENT_SCRIPT_CONTEXT, |
+ map.GetMostLikelyContextType(extension.get(), 2)); |
+ |
+ map.Insert("b", 3, 1); |
+ extension = |
+ CreateExtensionWithFlags(extensions::TypeToCreate::kExtension, "b"); |
+ EXPECT_EQ(extensions::Feature::BLESSED_EXTENSION_CONTEXT, |
+ map.GetMostLikelyContextType(extension.get(), 3)); |
+ |
+ map.Insert("c", 4, 2); |
+ extension = |
+ CreateExtensionWithFlags(extensions::TypeToCreate::kPlatformApp, "c"); |
+ EXPECT_EQ(extensions::Feature::BLESSED_EXTENSION_CONTEXT, |
+ map.GetMostLikelyContextType(extension.get(), 4)); |
+ |
+ map.set_is_lock_screen_context(true); |
+ |
+ map.Insert("d", 5, 3); |
+ extension = |
+ CreateExtensionWithFlags(extensions::TypeToCreate::kPlatformApp, "d"); |
+ EXPECT_EQ(extensions::Feature::LOCK_SCREEN_EXTENSION_CONTEXT, |
+ map.GetMostLikelyContextType(extension.get(), 5)); |
+ |
+ map.Insert("e", 6, 4); |
+ extension = |
+ CreateExtensionWithFlags(extensions::TypeToCreate::kExtension, "e"); |
+ EXPECT_EQ(extensions::Feature::LOCK_SCREEN_EXTENSION_CONTEXT, |
+ map.GetMostLikelyContextType(extension.get(), 6)); |
+ |
+ map.Insert("f", 7, 5); |
+ extension = |
+ CreateExtensionWithFlags(extensions::TypeToCreate::kHostedApp, "f"); |
+ EXPECT_EQ(extensions::Feature::BLESSED_WEB_PAGE_CONTEXT, |
+ map.GetMostLikelyContextType(extension.get(), 7)); |
+} |