| Index: chrome/renderer/extensions/extension_renderer_info_unittest.cc
|
| diff --git a/chrome/renderer/extensions/extension_renderer_info_unittest.cc b/chrome/renderer/extensions/extension_renderer_info_unittest.cc
|
| index 79d5cbd4266db1724aaa50342d8d42a53dd3debe..4d19ad29dbcc73151aa93089ea08799fd2fa5ab7 100644
|
| --- a/chrome/renderer/extensions/extension_renderer_info_unittest.cc
|
| +++ b/chrome/renderer/extensions/extension_renderer_info_unittest.cc
|
| @@ -2,69 +2,113 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#include "chrome/common/extensions/extension_extent.h"
|
| -#include "chrome/common/render_messages_params.h"
|
| +#include "base/file_path.h"
|
| +#include "base/logging.h"
|
| +#include "base/ref_counted.h"
|
| +#include "base/scoped_ptr.h"
|
| +#include "base/values.h"
|
| +#include "chrome/common/extensions/extension.h"
|
| #include "chrome/renderer/extensions/extension_renderer_info.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| -static void AddPattern(ExtensionExtent* extent, const std::string& pattern) {
|
| - int schemes = URLPattern::SCHEME_HTTP | URLPattern::SCHEME_HTTPS;
|
| - extent->AddPattern(URLPattern(schemes, pattern));
|
| +namespace {
|
| +
|
| +scoped_refptr<Extension> CreateTestExtension(const std::string& name,
|
| + const std::string& launch_url,
|
| + const std::string& extent) {
|
| + FilePath path;
|
| + path = path.AppendASCII(std::string("//") + name);
|
| +
|
| + DictionaryValue manifest;
|
| + manifest.SetString("name", name);
|
| + manifest.SetString("version", "1");
|
| +
|
| + if (!launch_url.empty())
|
| + manifest.SetString("app.launch.web_url", launch_url);
|
| +
|
| + if (!extent.empty()) {
|
| + ListValue* urls = new ListValue();
|
| + manifest.Set("app.urls", urls);
|
| + urls->Append(Value::CreateStringValue(extent));
|
| + }
|
| +
|
| + const bool kRequireKey = false;
|
| + std::string error;
|
| + scoped_refptr<Extension> extension(
|
| + Extension::Create(path, Extension::INTERNAL, manifest, kRequireKey,
|
| + &error));
|
| + EXPECT_TRUE(extension.get()) << error;
|
| + return extension;
|
| }
|
|
|
| +} // namespace
|
| +
|
| TEST(ExtensionRendererInfoTest, ExtensionRendererInfo) {
|
| - std::string one("1"), two("2"), three("3");
|
| -
|
| - ViewMsg_ExtensionsUpdated_Params msg;
|
| - msg.extensions.resize(3);
|
| -
|
| - msg.extensions[0].id = one;
|
| - ExtensionExtent web1;
|
| - AddPattern(&web1, "https://chrome.google.com/*");
|
| - msg.extensions[0].web_extent = web1;
|
| -
|
| - msg.extensions[1].id = two;
|
| - ExtensionExtent web2;
|
| - AddPattern(&web2, "http://code.google.com/p/chromium/*");
|
| - msg.extensions[1].web_extent = web2;
|
| -
|
| - msg.extensions[2].id = three;
|
| - ExtensionExtent web3;
|
| - AddPattern(&web3, "http://dev.chromium.org/*");
|
| - msg.extensions[2].web_extent = web3;
|
| -
|
| - ExtensionRendererInfo::UpdateExtensions(msg);
|
| - EXPECT_EQ(ExtensionRendererInfo::extensions_->size(), 3u);
|
| -
|
| - ExtensionRendererInfo* ext1 = &ExtensionRendererInfo::extensions_->at(0);
|
| - ExtensionRendererInfo* ext2 = &ExtensionRendererInfo::extensions_->at(1);
|
| - ExtensionRendererInfo* ext3 = &ExtensionRendererInfo::extensions_->at(2);
|
| - EXPECT_EQ(ext1->id(), one);
|
| - EXPECT_EQ(ext2->id(), two);
|
| - EXPECT_EQ(ext3->id(), three);
|
| -
|
| - EXPECT_EQ(ext1, ExtensionRendererInfo::GetByID(one));
|
| - EXPECT_EQ(ext1, ExtensionRendererInfo::GetByURL(
|
| - GURL("https://chrome.google.com/extensions/")));
|
| - EXPECT_EQ(ext2, ExtensionRendererInfo::GetByURL(
|
| - GURL("http://code.google.com/p/chromium/issues/")));
|
| - EXPECT_EQ(ext3, ExtensionRendererInfo::GetByURL(
|
| + scoped_refptr<Extension> ext1(CreateTestExtension(
|
| + "a", "https://chrome.google.com/launch", "https://chrome.google.com/"));
|
| +
|
| + scoped_refptr<Extension> ext2(CreateTestExtension(
|
| + "a", "http://code.google.com/p/chromium",
|
| + "http://code.google.com/p/chromium/"));
|
| +
|
| + scoped_refptr<Extension> ext3(CreateTestExtension(
|
| + "b", "http://dev.chromium.org/", "http://dev.chromium.org/"));
|
| +
|
| + scoped_refptr<Extension> ext4(CreateTestExtension("c", "", ""));
|
| +
|
| + ASSERT_TRUE(ext1 && ext2 && ext3 && ext4);
|
| +
|
| + ExtensionRendererInfo extensions;
|
| +
|
| + // Add an extension.
|
| + extensions.Update(ext1);
|
| + EXPECT_EQ(1u, extensions.size());
|
| + EXPECT_EQ(ext1, extensions.GetByID(ext1->id()));
|
| +
|
| + // Since extension2 has same ID, it should overwrite extension1.
|
| + extensions.Update(ext2);
|
| + EXPECT_EQ(1u, extensions.size());
|
| + EXPECT_EQ(ext2, extensions.GetByID(ext1->id()));
|
| +
|
| + // Add the other extensions.
|
| + extensions.Update(ext3);
|
| + extensions.Update(ext4);
|
| + EXPECT_EQ(3u, extensions.size());
|
| +
|
| + // Get extension by its chrome-extension:// URL
|
| + EXPECT_EQ(ext2, extensions.GetByURL(
|
| + ext2->GetResourceURL("test.html")));
|
| + EXPECT_EQ(ext3, extensions.GetByURL(
|
| + ext3->GetResourceURL("test.html")));
|
| + EXPECT_EQ(ext4, extensions.GetByURL(
|
| + ext4->GetResourceURL("test.html")));
|
| +
|
| + // Get extension by web extent.
|
| + EXPECT_EQ(ext2, extensions.GetByURL(
|
| + GURL("http://code.google.com/p/chromium/monkey")));
|
| + EXPECT_EQ(ext3, extensions.GetByURL(
|
| GURL("http://dev.chromium.org/design-docs/")));
|
| - EXPECT_EQ(NULL, ExtensionRendererInfo::GetByURL(
|
| - GURL("http://blog.chromium.org/")));
|
| -
|
| - EXPECT_TRUE(ExtensionRendererInfo::InSameExtent(
|
| - GURL("https://chrome.google.com/extensions/"),
|
| - GURL("https://chrome.google.com/")));
|
| - EXPECT_FALSE(ExtensionRendererInfo::InSameExtent(
|
| - GURL("https://chrome.google.com/extensions/"),
|
| - GURL("http://chrome.google.com/")));
|
| - EXPECT_FALSE(ExtensionRendererInfo::InSameExtent(
|
| - GURL("https://chrome.google.com/extensions/"),
|
| + EXPECT_FALSE(extensions.GetByURL(
|
| + GURL("http://blog.chromium.org/")));
|
| +
|
| + // Test InSameExtent().
|
| + EXPECT_TRUE(extensions.InSameExtent(
|
| + GURL("http://code.google.com/p/chromium/monkey/"),
|
| + GURL("http://code.google.com/p/chromium/")));
|
| + EXPECT_FALSE(extensions.InSameExtent(
|
| + GURL("http://code.google.com/p/chromium/"),
|
| + GURL("https://code.google.com/p/chromium/")));
|
| + EXPECT_FALSE(extensions.InSameExtent(
|
| + GURL("http://code.google.com/p/chromium/"),
|
| GURL("http://dev.chromium.org/design-docs/")));
|
|
|
| // Both of these should be NULL, which mean true for InSameExtent.
|
| - EXPECT_TRUE(ExtensionRendererInfo::InSameExtent(
|
| + EXPECT_TRUE(extensions.InSameExtent(
|
| GURL("http://www.google.com/"),
|
| GURL("http://blog.chromium.org/")));
|
| +
|
| + // Remove one of the extensions.
|
| + extensions.Remove(ext2->id());
|
| + EXPECT_EQ(2u, extensions.size());
|
| + EXPECT_FALSE(extensions.GetByID(ext2->id()));
|
| }
|
|
|