OLD | NEW |
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 Loading... |
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 |
OLD | NEW |