// Copyright 2013 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/process_map.h" #include "testing/gtest/include/gtest/gtest.h" using extensions::ProcessMap; TEST(ExtensionProcessMapTest, Test) { ProcessMap map; // Test behavior when empty. EXPECT_FALSE(map.Contains("a", 1)); EXPECT_FALSE(map.Remove("a", 1, 1)); EXPECT_EQ(0u, map.size()); // Test insertion and behavior with one item. EXPECT_TRUE(map.Insert("a", 1, 1)); EXPECT_TRUE(map.Contains("a", 1)); EXPECT_FALSE(map.Contains("a", 2)); EXPECT_FALSE(map.Contains("b", 1)); EXPECT_EQ(1u, map.size()); // Test inserting a duplicate item. EXPECT_FALSE(map.Insert("a", 1, 1)); EXPECT_TRUE(map.Contains("a", 1)); EXPECT_EQ(1u, map.size()); // Insert some more items. EXPECT_TRUE(map.Insert("a", 2, 2)); EXPECT_TRUE(map.Insert("b", 1, 3)); EXPECT_TRUE(map.Insert("b", 2, 4)); EXPECT_EQ(4u, map.size()); EXPECT_TRUE(map.Contains("a", 1)); EXPECT_TRUE(map.Contains("a", 2)); EXPECT_TRUE(map.Contains("b", 1)); EXPECT_TRUE(map.Contains("b", 2)); EXPECT_FALSE(map.Contains("a", 3)); // Note that this only differs from an existing item because of the site // instance id. EXPECT_TRUE(map.Insert("a", 1, 5)); EXPECT_TRUE(map.Contains("a", 1)); // Test removal. EXPECT_TRUE(map.Remove("a", 1, 1)); EXPECT_FALSE(map.Remove("a", 1, 1)); EXPECT_EQ(4u, map.size()); // Should still return true because there were two site instances for this // extension/process pair. EXPECT_TRUE(map.Contains("a", 1)); EXPECT_TRUE(map.Remove("a", 1, 5)); EXPECT_EQ(3u, map.size()); EXPECT_FALSE(map.Contains("a", 1)); EXPECT_EQ(2, map.RemoveAllFromProcess(2)); EXPECT_EQ(1u, map.size()); EXPECT_EQ(0, map.RemoveAllFromProcess(2)); EXPECT_EQ(1u, map.size()); }