| 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));
 | 
| +}
 | 
| 
 |