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 "chrome/browser/ui/views/extensions/extension_install_dialog_view.h" | 5 #include "chrome/browser/ui/views/extensions/extension_install_dialog_view.h" |
6 | 6 |
7 #include "base/strings/utf_string_conversions.h" | 7 #include "base/strings/utf_string_conversions.h" |
8 #include "chrome/browser/extensions/extension_browsertest.h" | 8 #include "chrome/browser/extensions/extension_browsertest.h" |
9 #include "chrome/browser/extensions/extension_icon_manager.h" | 9 #include "chrome/browser/extensions/extension_icon_manager.h" |
10 #include "chrome/browser/extensions/extension_install_prompt.h" | 10 #include "chrome/browser/extensions/extension_install_prompt.h" |
11 #include "chrome/browser/ui/browser.h" | 11 #include "chrome/browser/ui/browser.h" |
12 #include "chrome/browser/ui/tabs/tab_strip_model.h" | 12 #include "chrome/browser/ui/tabs/tab_strip_model.h" |
13 #include "chrome/browser/ui/webui/extensions/extension_settings_handler.h" | 13 #include "chrome/browser/ui/webui/extensions/extension_settings_handler.h" |
14 #include "chrome/common/extensions/extension_test_util.h" | 14 #include "chrome/common/extensions/extension_test_util.h" |
15 #include "components/constrained_window/constrained_window_views.h" | 15 #include "components/constrained_window/constrained_window_views.h" |
16 #include "content/public/browser/browser_thread.h" | 16 #include "content/public/browser/browser_thread.h" |
17 #include "content/public/test/test_utils.h" | 17 #include "content/public/test/test_utils.h" |
18 #include "extensions/common/extension.h" | 18 #include "extensions/common/extension.h" |
| 19 #include "extensions/common/permissions/permission_message_provider.h" |
19 #include "extensions/common/permissions/permissions_data.h" | 20 #include "extensions/common/permissions/permissions_data.h" |
20 #include "extensions/common/test_util.h" | 21 #include "extensions/common/test_util.h" |
21 #include "ui/views/controls/scroll_view.h" | 22 #include "ui/views/controls/scroll_view.h" |
22 #include "ui/views/view.h" | 23 #include "ui/views/view.h" |
23 #include "ui/views/widget/widget.h" | 24 #include "ui/views/widget/widget.h" |
24 | 25 |
| 26 using extensions::PermissionMessageString; |
| 27 using extensions::PermissionMessageStrings; |
| 28 |
25 // A simple delegate implementation that counts the number of times | 29 // A simple delegate implementation that counts the number of times |
26 // |InstallUIProceed| and |InstallUIAbort| are called. | 30 // |InstallUIProceed| and |InstallUIAbort| are called. |
27 class MockExtensionInstallPromptDelegate | 31 class MockExtensionInstallPromptDelegate |
28 : public ExtensionInstallPrompt::Delegate { | 32 : public ExtensionInstallPrompt::Delegate { |
29 public: | 33 public: |
30 MockExtensionInstallPromptDelegate() | 34 MockExtensionInstallPromptDelegate() |
31 : proceed_count_(0), | 35 : proceed_count_(0), |
32 abort_count_(0) {} | 36 abort_count_(0) {} |
33 | 37 |
34 // ExtensionInstallPrompt::Delegate overrides. | 38 // ExtensionInstallPrompt::Delegate overrides. |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
74 explicit ExtensionInstallDialogViewTestBase( | 78 explicit ExtensionInstallDialogViewTestBase( |
75 ExtensionInstallPrompt::PromptType prompt_type); | 79 ExtensionInstallPrompt::PromptType prompt_type); |
76 ~ExtensionInstallDialogViewTestBase() override {} | 80 ~ExtensionInstallDialogViewTestBase() override {} |
77 | 81 |
78 void SetUpOnMainThread() override; | 82 void SetUpOnMainThread() override; |
79 | 83 |
80 ExtensionInstallPrompt::Prompt* prompt() { return prompt_.get(); } | 84 ExtensionInstallPrompt::Prompt* prompt() { return prompt_.get(); } |
81 content::WebContents* web_contents() { return web_contents_; } | 85 content::WebContents* web_contents() { return web_contents_; } |
82 MockExtensionInstallPromptDelegate* delegate() { return &delegate_; } | 86 MockExtensionInstallPromptDelegate* delegate() { return &delegate_; } |
83 | 87 |
84 void SetPromptPermissions(std::vector<base::string16> permissions); | 88 void SetPromptPermissions(const PermissionMessageStrings& permissions); |
85 void SetPromptDetails(std::vector<base::string16> details); | |
86 void SetPromptRetainedFiles(std::vector<base::FilePath> files); | 89 void SetPromptRetainedFiles(std::vector<base::FilePath> files); |
87 | 90 |
88 private: | 91 private: |
89 const extensions::Extension* extension_; | 92 const extensions::Extension* extension_; |
90 MockExtensionInstallPrompt* install_prompt_; | 93 MockExtensionInstallPrompt* install_prompt_; |
91 scoped_refptr<ExtensionInstallPrompt::Prompt> prompt_; | 94 scoped_refptr<ExtensionInstallPrompt::Prompt> prompt_; |
92 content::WebContents* web_contents_; | 95 content::WebContents* web_contents_; |
93 MockExtensionInstallPromptDelegate delegate_; | 96 MockExtensionInstallPromptDelegate delegate_; |
94 | 97 |
95 DISALLOW_COPY_AND_ASSIGN(ExtensionInstallDialogViewTestBase); | 98 DISALLOW_COPY_AND_ASSIGN(ExtensionInstallDialogViewTestBase); |
(...skipping 17 matching lines...) Expand all Loading... |
113 | 116 |
114 install_prompt_ = new MockExtensionInstallPrompt(web_contents_); | 117 install_prompt_ = new MockExtensionInstallPrompt(web_contents_); |
115 install_prompt_->set_prompt(prompt_.get()); | 118 install_prompt_->set_prompt(prompt_.get()); |
116 prompt_->set_extension(extension_); | 119 prompt_->set_extension(extension_); |
117 | 120 |
118 scoped_ptr<ExtensionIconManager> icon_manager(new ExtensionIconManager()); | 121 scoped_ptr<ExtensionIconManager> icon_manager(new ExtensionIconManager()); |
119 const SkBitmap icon_bitmap = icon_manager->GetIcon(extension_->id()); | 122 const SkBitmap icon_bitmap = icon_manager->GetIcon(extension_->id()); |
120 gfx::Image icon = gfx::Image::CreateFrom1xBitmap(icon_bitmap); | 123 gfx::Image icon = gfx::Image::CreateFrom1xBitmap(icon_bitmap); |
121 prompt_->set_icon(icon); | 124 prompt_->set_icon(icon); |
122 | 125 |
123 this->SetPromptPermissions(std::vector<base::string16>()); | 126 this->SetPromptPermissions(PermissionMessageStrings()); |
124 this->SetPromptDetails(std::vector<base::string16>()); | |
125 this->SetPromptRetainedFiles(std::vector<base::FilePath>()); | 127 this->SetPromptRetainedFiles(std::vector<base::FilePath>()); |
126 } | 128 } |
127 | 129 |
128 void ExtensionInstallDialogViewTestBase::SetPromptPermissions( | 130 void ExtensionInstallDialogViewTestBase::SetPromptPermissions( |
129 std::vector<base::string16> permissions) { | 131 const PermissionMessageStrings& permissions) { |
130 prompt_->SetPermissions(permissions, | 132 prompt_->SetPermissions(permissions, |
131 ExtensionInstallPrompt::REGULAR_PERMISSIONS); | 133 ExtensionInstallPrompt::REGULAR_PERMISSIONS); |
132 } | 134 } |
133 | 135 |
134 void ExtensionInstallDialogViewTestBase::SetPromptDetails( | |
135 std::vector<base::string16> details) { | |
136 prompt_->SetPermissionsDetails(details, | |
137 ExtensionInstallPrompt::REGULAR_PERMISSIONS); | |
138 } | |
139 | |
140 void ExtensionInstallDialogViewTestBase::SetPromptRetainedFiles( | 136 void ExtensionInstallDialogViewTestBase::SetPromptRetainedFiles( |
141 std::vector<base::FilePath> files) { | 137 std::vector<base::FilePath> files) { |
142 prompt_->set_retained_files(files); | 138 prompt_->set_retained_files(files); |
143 } | 139 } |
144 | 140 |
145 class ScrollbarTest : public ExtensionInstallDialogViewTestBase { | 141 class ScrollbarTest : public ExtensionInstallDialogViewTestBase { |
146 protected: | 142 protected: |
147 ScrollbarTest(); | 143 ScrollbarTest(); |
148 ~ScrollbarTest() override {} | 144 ~ScrollbarTest() override {} |
149 | 145 |
(...skipping 22 matching lines...) Expand all Loading... |
172 content::RunAllBlockingPoolTasksUntilIdle(); | 168 content::RunAllBlockingPoolTasksUntilIdle(); |
173 | 169 |
174 // Check if the vertical scrollbar is visible. | 170 // Check if the vertical scrollbar is visible. |
175 return dialog->scroll_view()->vertical_scroll_bar()->visible(); | 171 return dialog->scroll_view()->vertical_scroll_bar()->visible(); |
176 } | 172 } |
177 | 173 |
178 // Tests that a scrollbar _is_ shown for an excessively long extension | 174 // Tests that a scrollbar _is_ shown for an excessively long extension |
179 // install prompt. | 175 // install prompt. |
180 IN_PROC_BROWSER_TEST_F(ScrollbarTest, LongPromptScrollbar) { | 176 IN_PROC_BROWSER_TEST_F(ScrollbarTest, LongPromptScrollbar) { |
181 base::string16 permission_string(base::ASCIIToUTF16("Test")); | 177 base::string16 permission_string(base::ASCIIToUTF16("Test")); |
182 std::vector<base::string16> permissions; | 178 PermissionMessageStrings permissions; |
183 std::vector<base::string16> details; | 179 for (int i = 0; i < 20; i++) |
184 for (int i = 0; i < 20; i++) { | 180 permissions.push_back(PermissionMessageString(permission_string)); |
185 permissions.push_back(permission_string); | |
186 details.push_back(base::string16()); | |
187 } | |
188 this->SetPromptPermissions(permissions); | 181 this->SetPromptPermissions(permissions); |
189 this->SetPromptDetails(details); | |
190 ASSERT_TRUE(IsScrollbarVisible()) << "Scrollbar is not visible"; | 182 ASSERT_TRUE(IsScrollbarVisible()) << "Scrollbar is not visible"; |
191 } | 183 } |
192 | 184 |
193 // Tests that a scrollbar isn't shown for this regression case. | 185 // Tests that a scrollbar isn't shown for this regression case. |
194 // See crbug.com/385570 for details. | 186 // See crbug.com/385570 for details. |
195 IN_PROC_BROWSER_TEST_F(ScrollbarTest, ScrollbarRegression) { | 187 IN_PROC_BROWSER_TEST_F(ScrollbarTest, ScrollbarRegression) { |
196 base::string16 permission_string(base::ASCIIToUTF16( | 188 base::string16 permission_string(base::ASCIIToUTF16( |
197 "Read and modify your data on *.facebook.com")); | 189 "Read and modify your data on *.facebook.com")); |
198 std::vector<base::string16> permissions; | 190 PermissionMessageStrings permissions; |
199 permissions.push_back(permission_string); | 191 permissions.push_back(PermissionMessageString(permission_string)); |
200 this->SetPromptPermissions(permissions); | 192 this->SetPromptPermissions(permissions); |
201 std::vector<base::string16> details; | |
202 details.push_back(base::string16()); | |
203 this->SetPromptDetails(details); | |
204 ASSERT_FALSE(IsScrollbarVisible()) << "Scrollbar is visible"; | 193 ASSERT_FALSE(IsScrollbarVisible()) << "Scrollbar is visible"; |
205 } | 194 } |
206 | 195 |
207 class ExtensionInstallDialogViewTest | 196 class ExtensionInstallDialogViewTest |
208 : public ExtensionInstallDialogViewTestBase { | 197 : public ExtensionInstallDialogViewTestBase { |
209 protected: | 198 protected: |
210 ExtensionInstallDialogViewTest() | 199 ExtensionInstallDialogViewTest() |
211 : ExtensionInstallDialogViewTestBase( | 200 : ExtensionInstallDialogViewTestBase( |
212 ExtensionInstallPrompt::INSTALL_PROMPT) {} | 201 ExtensionInstallPrompt::INSTALL_PROMPT) {} |
213 ~ExtensionInstallDialogViewTest() override {} | 202 ~ExtensionInstallDialogViewTest() override {} |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
257 MockExtensionInstallPromptDelegate delegate; | 246 MockExtensionInstallPromptDelegate delegate; |
258 scoped_ptr<ExtensionInstallDialogView> dialog( | 247 scoped_ptr<ExtensionInstallDialogView> dialog( |
259 new ExtensionInstallDialogView( | 248 new ExtensionInstallDialogView( |
260 profile(), web_contents(), &delegate, prompt())); | 249 profile(), web_contents(), &delegate, prompt())); |
261 dialog.reset(); | 250 dialog.reset(); |
262 | 251 |
263 EXPECT_EQ(1, delegate.abort_count()); | 252 EXPECT_EQ(1, delegate.abort_count()); |
264 EXPECT_EQ(0, delegate.proceed_count()); | 253 EXPECT_EQ(0, delegate.proceed_count()); |
265 } | 254 } |
266 } | 255 } |
OLD | NEW |