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

Side by Side 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/common/extensions/extension_extent.h" 5 #include "base/file_path.h"
6 #include "chrome/common/render_messages_params.h" 6 #include "base/logging.h"
7 #include "base/ref_counted.h"
8 #include "base/scoped_ptr.h"
9 #include "base/values.h"
10 #include "chrome/common/extensions/extension.h"
7 #include "chrome/renderer/extensions/extension_renderer_info.h" 11 #include "chrome/renderer/extensions/extension_renderer_info.h"
8 #include "testing/gtest/include/gtest/gtest.h" 12 #include "testing/gtest/include/gtest/gtest.h"
9 13
10 static void AddPattern(ExtensionExtent* extent, const std::string& pattern) { 14 namespace {
11 int schemes = URLPattern::SCHEME_HTTP | URLPattern::SCHEME_HTTPS; 15
12 extent->AddPattern(URLPattern(schemes, pattern)); 16 scoped_refptr<Extension> CreateTestExtension(const std::string& name,
17 const std::string& launch_url,
18 const std::string& extent) {
19 FilePath path;
20 path = path.AppendASCII(std::string("//") + name);
21
22 DictionaryValue manifest;
23 manifest.SetString("name", name);
24 manifest.SetString("version", "1");
25
26 if (!launch_url.empty())
27 manifest.SetString("app.launch.web_url", launch_url);
28
29 if (!extent.empty()) {
30 ListValue* urls = new ListValue();
31 manifest.Set("app.urls", urls);
32 urls->Append(Value::CreateStringValue(extent));
33 }
34
35 const bool kRequireKey = false;
36 std::string error;
37 scoped_refptr<Extension> extension(
38 Extension::Create(path, Extension::INTERNAL, manifest, kRequireKey,
39 &error));
40 EXPECT_TRUE(extension.get()) << error;
41 return extension;
13 } 42 }
14 43
44 } // namespace
45
15 TEST(ExtensionRendererInfoTest, ExtensionRendererInfo) { 46 TEST(ExtensionRendererInfoTest, ExtensionRendererInfo) {
16 std::string one("1"), two("2"), three("3"); 47 scoped_refptr<Extension> ext1(CreateTestExtension(
48 "a", "https://chrome.google.com/launch", "https://chrome.google.com/"));
17 49
18 ViewMsg_ExtensionsUpdated_Params msg; 50 scoped_refptr<Extension> ext2(CreateTestExtension(
19 msg.extensions.resize(3); 51 "a", "http://code.google.com/p/chromium",
52 "http://code.google.com/p/chromium/"));
20 53
21 msg.extensions[0].id = one; 54 scoped_refptr<Extension> ext3(CreateTestExtension(
22 ExtensionExtent web1; 55 "b", "http://dev.chromium.org/", "http://dev.chromium.org/"));
23 AddPattern(&web1, "https://chrome.google.com/*");
24 msg.extensions[0].web_extent = web1;
25 56
26 msg.extensions[1].id = two; 57 scoped_refptr<Extension> ext4(CreateTestExtension("c", "", ""));
27 ExtensionExtent web2;
28 AddPattern(&web2, "http://code.google.com/p/chromium/*");
29 msg.extensions[1].web_extent = web2;
30 58
31 msg.extensions[2].id = three; 59 ASSERT_TRUE(ext1 && ext2 && ext3 && ext4);
32 ExtensionExtent web3;
33 AddPattern(&web3, "http://dev.chromium.org/*");
34 msg.extensions[2].web_extent = web3;
35 60
36 ExtensionRendererInfo::UpdateExtensions(msg); 61 ExtensionRendererInfo extensions;
37 EXPECT_EQ(ExtensionRendererInfo::extensions_->size(), 3u);
38 62
39 ExtensionRendererInfo* ext1 = &ExtensionRendererInfo::extensions_->at(0); 63 // Add an extension.
40 ExtensionRendererInfo* ext2 = &ExtensionRendererInfo::extensions_->at(1); 64 extensions.Update(ext1);
41 ExtensionRendererInfo* ext3 = &ExtensionRendererInfo::extensions_->at(2); 65 EXPECT_EQ(1u, extensions.size());
42 EXPECT_EQ(ext1->id(), one); 66 EXPECT_EQ(ext1, extensions.GetByID(ext1->id()));
43 EXPECT_EQ(ext2->id(), two);
44 EXPECT_EQ(ext3->id(), three);
45 67
46 EXPECT_EQ(ext1, ExtensionRendererInfo::GetByID(one)); 68 // Since extension2 has same ID, it should overwrite extension1.
47 EXPECT_EQ(ext1, ExtensionRendererInfo::GetByURL( 69 extensions.Update(ext2);
48 GURL("https://chrome.google.com/extensions/"))); 70 EXPECT_EQ(1u, extensions.size());
49 EXPECT_EQ(ext2, ExtensionRendererInfo::GetByURL( 71 EXPECT_EQ(ext2, extensions.GetByID(ext1->id()));
50 GURL("http://code.google.com/p/chromium/issues/"))); 72
51 EXPECT_EQ(ext3, ExtensionRendererInfo::GetByURL( 73 // Add the other extensions.
74 extensions.Update(ext3);
75 extensions.Update(ext4);
76 EXPECT_EQ(3u, extensions.size());
77
78 // Get extension by its chrome-extension:// URL
79 EXPECT_EQ(ext2, extensions.GetByURL(
80 ext2->GetResourceURL("test.html")));
81 EXPECT_EQ(ext3, extensions.GetByURL(
82 ext3->GetResourceURL("test.html")));
83 EXPECT_EQ(ext4, extensions.GetByURL(
84 ext4->GetResourceURL("test.html")));
85
86 // Get extension by web extent.
87 EXPECT_EQ(ext2, extensions.GetByURL(
88 GURL("http://code.google.com/p/chromium/monkey")));
89 EXPECT_EQ(ext3, extensions.GetByURL(
52 GURL("http://dev.chromium.org/design-docs/"))); 90 GURL("http://dev.chromium.org/design-docs/")));
53 EXPECT_EQ(NULL, ExtensionRendererInfo::GetByURL( 91 EXPECT_FALSE(extensions.GetByURL(
54 GURL("http://blog.chromium.org/"))); 92 GURL("http://blog.chromium.org/")));
55 93
56 EXPECT_TRUE(ExtensionRendererInfo::InSameExtent( 94 // Test InSameExtent().
57 GURL("https://chrome.google.com/extensions/"), 95 EXPECT_TRUE(extensions.InSameExtent(
58 GURL("https://chrome.google.com/"))); 96 GURL("http://code.google.com/p/chromium/monkey/"),
59 EXPECT_FALSE(ExtensionRendererInfo::InSameExtent( 97 GURL("http://code.google.com/p/chromium/")));
60 GURL("https://chrome.google.com/extensions/"), 98 EXPECT_FALSE(extensions.InSameExtent(
61 GURL("http://chrome.google.com/"))); 99 GURL("http://code.google.com/p/chromium/"),
62 EXPECT_FALSE(ExtensionRendererInfo::InSameExtent( 100 GURL("https://code.google.com/p/chromium/")));
63 GURL("https://chrome.google.com/extensions/"), 101 EXPECT_FALSE(extensions.InSameExtent(
102 GURL("http://code.google.com/p/chromium/"),
64 GURL("http://dev.chromium.org/design-docs/"))); 103 GURL("http://dev.chromium.org/design-docs/")));
65 104
66 // Both of these should be NULL, which mean true for InSameExtent. 105 // Both of these should be NULL, which mean true for InSameExtent.
67 EXPECT_TRUE(ExtensionRendererInfo::InSameExtent( 106 EXPECT_TRUE(extensions.InSameExtent(
68 GURL("http://www.google.com/"), 107 GURL("http://www.google.com/"),
69 GURL("http://blog.chromium.org/"))); 108 GURL("http://blog.chromium.org/")));
109
110 // Remove one of the extensions.
111 extensions.Remove(ext2->id());
112 EXPECT_EQ(2u, extensions.size());
113 EXPECT_FALSE(extensions.GetByID(ext2->id()));
70 } 114 }
OLDNEW
« 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