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

Side by Side Diff: chrome/browser/extensions/extension_web_ui_unittest.cc

Issue 1635663002: [Extensions] Fix override urls' visible urls (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 10 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
« no previous file with comments | « chrome/browser/extensions/extension_web_ui.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "base/command_line.h" 5 #include "base/command_line.h"
6 #include "base/message_loop/message_loop.h" 6 #include "base/message_loop/message_loop.h"
7 #include "build/build_config.h" 7 #include "build/build_config.h"
8 #include "chrome/browser/extensions/extension_service.h" 8 #include "chrome/browser/extensions/extension_service.h"
9 #include "chrome/browser/extensions/extension_web_ui.h" 9 #include "chrome/browser/extensions/extension_web_ui.h"
10 #include "chrome/browser/extensions/extension_web_ui_override_registrar.h" 10 #include "chrome/browser/extensions/extension_web_ui_override_registrar.h"
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
64 #if defined OS_CHROMEOS 64 #if defined OS_CHROMEOS
65 chromeos::ScopedTestDeviceSettingsService test_device_settings_service_; 65 chromeos::ScopedTestDeviceSettingsService test_device_settings_service_;
66 chromeos::ScopedTestCrosSettings test_cros_settings_; 66 chromeos::ScopedTestCrosSettings test_cros_settings_;
67 chromeos::ScopedTestUserManager test_user_manager_; 67 chromeos::ScopedTestUserManager test_user_manager_;
68 #endif 68 #endif
69 }; 69 };
70 70
71 // Test that component extension url overrides have lower priority than 71 // Test that component extension url overrides have lower priority than
72 // non-component extension url overrides. 72 // non-component extension url overrides.
73 TEST_F(ExtensionWebUITest, ExtensionURLOverride) { 73 TEST_F(ExtensionWebUITest, ExtensionURLOverride) {
74 const char kOverrideResource[] = "1.html";
74 // Register a non-component extension. 75 // Register a non-component extension.
75 DictionaryBuilder manifest; 76 DictionaryBuilder manifest;
76 manifest.Set(manifest_keys::kName, "ext1") 77 manifest.Set(manifest_keys::kName, "ext1")
77 .Set(manifest_keys::kVersion, "0.1") 78 .Set(manifest_keys::kVersion, "0.1")
78 .Set(std::string(manifest_keys::kChromeURLOverrides), 79 .Set(std::string(manifest_keys::kChromeURLOverrides),
79 std::move(DictionaryBuilder().Set("bookmarks", "1.html"))); 80 std::move(DictionaryBuilder().Set("bookmarks", kOverrideResource)));
80 scoped_refptr<Extension> ext_unpacked( 81 scoped_refptr<Extension> ext_unpacked(
81 ExtensionBuilder() 82 ExtensionBuilder()
82 .SetManifest(std::move(manifest)) 83 .SetManifest(std::move(manifest))
83 .SetLocation(Manifest::UNPACKED) 84 .SetLocation(Manifest::UNPACKED)
84 .SetID("abcdefghijabcdefghijabcdefghijaa") 85 .SetID("abcdefghijabcdefghijabcdefghijaa")
85 .Build()); 86 .Build());
86 extension_service_->AddExtension(ext_unpacked.get()); 87 extension_service_->AddExtension(ext_unpacked.get());
87 88
88 GURL expected_unpacked_override_url(std::string(ext_unpacked->url().spec()) + 89 const GURL kExpectedUnpackedOverrideUrl =
89 "1.html"); 90 ext_unpacked->GetResourceURL(kOverrideResource);
90 GURL url("chrome://bookmarks"); 91 const GURL kBookmarksUrl("chrome://bookmarks");
91 EXPECT_TRUE(ExtensionWebUI::HandleChromeURLOverride(&url, profile_.get())); 92 GURL changed_url = kBookmarksUrl;
92 EXPECT_EQ(url, expected_unpacked_override_url); 93 EXPECT_TRUE(
94 ExtensionWebUI::HandleChromeURLOverride(&changed_url, profile_.get()));
95 EXPECT_EQ(kExpectedUnpackedOverrideUrl, changed_url);
96 EXPECT_TRUE(ExtensionWebUI::HandleChromeURLOverrideReverse(&changed_url,
97 profile_.get()));
98 EXPECT_EQ(kBookmarksUrl, changed_url);
99
100 GURL url_plus_fragment = kBookmarksUrl.Resolve("#1");
101 EXPECT_TRUE(ExtensionWebUI::HandleChromeURLOverride(&url_plus_fragment,
102 profile_.get()));
103 EXPECT_EQ(kExpectedUnpackedOverrideUrl.Resolve("#1"),
104 url_plus_fragment);
105 EXPECT_TRUE(ExtensionWebUI::HandleChromeURLOverrideReverse(&url_plus_fragment,
106 profile_.get()));
107 EXPECT_EQ(kBookmarksUrl.Resolve("#1"), url_plus_fragment);
93 108
94 // Register a component extension 109 // Register a component extension
110 const char kOverrideResource2[] = "2.html";
95 DictionaryBuilder manifest2; 111 DictionaryBuilder manifest2;
96 manifest2.Set(manifest_keys::kName, "ext2") 112 manifest2.Set(manifest_keys::kName, "ext2")
97 .Set(manifest_keys::kVersion, "0.1") 113 .Set(manifest_keys::kVersion, "0.1")
98 .Set(std::string(manifest_keys::kChromeURLOverrides), 114 .Set(std::string(manifest_keys::kChromeURLOverrides),
99 std::move(DictionaryBuilder().Set("bookmarks", "2.html"))); 115 std::move(DictionaryBuilder().Set("bookmarks", kOverrideResource2)));
100 scoped_refptr<Extension> ext_component( 116 scoped_refptr<Extension> ext_component(
101 ExtensionBuilder() 117 ExtensionBuilder()
102 .SetManifest(std::move(manifest2)) 118 .SetManifest(std::move(manifest2))
103 .SetLocation(Manifest::COMPONENT) 119 .SetLocation(Manifest::COMPONENT)
104 .SetID("bbabcdefghijabcdefghijabcdefghij") 120 .SetID("bbabcdefghijabcdefghijabcdefghij")
105 .Build()); 121 .Build());
106 extension_service_->AddComponentExtension(ext_component.get()); 122 extension_service_->AddComponentExtension(ext_component.get());
107 123
108 // Despite being registered more recently, the component extension should 124 // Despite being registered more recently, the component extension should
109 // not take precedence over the non-component extension. 125 // not take precedence over the non-component extension.
110 url = GURL("chrome://bookmarks"); 126 changed_url = kBookmarksUrl;
111 EXPECT_TRUE(ExtensionWebUI::HandleChromeURLOverride(&url, profile_.get())); 127 EXPECT_TRUE(
112 EXPECT_EQ(url, expected_unpacked_override_url); 128 ExtensionWebUI::HandleChromeURLOverride(&changed_url, profile_.get()));
129 EXPECT_EQ(kExpectedUnpackedOverrideUrl, changed_url);
130 EXPECT_TRUE(ExtensionWebUI::HandleChromeURLOverrideReverse(&changed_url,
131 profile_.get()));
132 EXPECT_EQ(kBookmarksUrl, changed_url);
113 133
114 GURL expected_component_override_url( 134 GURL kExpectedComponentOverrideUrl =
115 std::string(ext_component->url().spec()) + "2.html"); 135 ext_component->GetResourceURL(kOverrideResource2);
116 136
117 // Unregister non-component extension. Only component extension remaining. 137 // Unregister non-component extension. Only component extension remaining.
118 ExtensionWebUI::UnregisterChromeURLOverrides( 138 ExtensionWebUI::UnregisterChromeURLOverrides(
119 profile_.get(), URLOverrides::GetChromeURLOverrides(ext_unpacked.get())); 139 profile_.get(), URLOverrides::GetChromeURLOverrides(ext_unpacked.get()));
120 url = GURL("chrome://bookmarks"); 140 changed_url = kBookmarksUrl;
121 EXPECT_TRUE(ExtensionWebUI::HandleChromeURLOverride(&url, profile_.get())); 141 EXPECT_TRUE(
122 EXPECT_EQ(url, expected_component_override_url); 142 ExtensionWebUI::HandleChromeURLOverride(&changed_url, profile_.get()));
143 EXPECT_EQ(kExpectedComponentOverrideUrl, changed_url);
144 EXPECT_TRUE(ExtensionWebUI::HandleChromeURLOverrideReverse(&changed_url,
145 profile_.get()));
146 EXPECT_EQ(kBookmarksUrl, changed_url);
123 147
124 // This time the non-component extension was registered more recently and 148 // This time the non-component extension was registered more recently and
125 // should still take precedence. 149 // should still take precedence.
126 ExtensionWebUI::RegisterOrActivateChromeURLOverrides( 150 ExtensionWebUI::RegisterOrActivateChromeURLOverrides(
127 profile_.get(), URLOverrides::GetChromeURLOverrides(ext_unpacked.get())); 151 profile_.get(), URLOverrides::GetChromeURLOverrides(ext_unpacked.get()));
128 url = GURL("chrome://bookmarks"); 152 changed_url = kBookmarksUrl;
129 EXPECT_TRUE(ExtensionWebUI::HandleChromeURLOverride(&url, profile_.get())); 153 EXPECT_TRUE(
130 EXPECT_EQ(url, expected_unpacked_override_url); 154 ExtensionWebUI::HandleChromeURLOverride(&changed_url, profile_.get()));
155 EXPECT_EQ(kExpectedUnpackedOverrideUrl, changed_url);
156 EXPECT_TRUE(ExtensionWebUI::HandleChromeURLOverrideReverse(&changed_url,
157 profile_.get()));
158 EXPECT_EQ(kBookmarksUrl, changed_url);
131 } 159 }
132 160
133 } // namespace extensions 161 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/browser/extensions/extension_web_ui.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698