Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3406)

Unified Diff: chrome/renderer/extensions/extension_renderer_info_unittest.cc

Issue 6242010: Refactor away most of ExtensionRendererInfo (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: address comments Created 9 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/renderer/extensions/extension_renderer_info.cc ('k') | chrome/renderer/localized_error.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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()));
}
« no previous file with comments | « chrome/renderer/extensions/extension_renderer_info.cc ('k') | chrome/renderer/localized_error.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698