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

Side by Side Diff: chrome/browser/ui/panels/panel_browser_view_browsertest.cc

Issue 6975062: Update Panel UI looks on Windows. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 6 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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/i18n/time_formatting.h" 6 #include "base/i18n/time_formatting.h"
7 #include "chrome/browser/extensions/extension_service.h" 7 #include "chrome/browser/extensions/extension_service.h"
8 #include "chrome/browser/profiles/profile.h" 8 #include "chrome/browser/profiles/profile.h"
9 #include "chrome/browser/ui/browser.h" 9 #include "chrome/browser/ui/browser.h"
10 #include "chrome/browser/ui/browser_window.h" 10 #include "chrome/browser/ui/browser_window.h"
11 #include "chrome/browser/ui/panels/about_panel_bubble.h"
12 #include "chrome/browser/ui/panels/panel.h" 11 #include "chrome/browser/ui/panels/panel.h"
13 #include "chrome/browser/ui/panels/panel_browser_frame_view.h" 12 #include "chrome/browser/ui/panels/panel_browser_frame_view.h"
14 #include "chrome/browser/ui/panels/panel_browser_view.h" 13 #include "chrome/browser/ui/panels/panel_browser_view.h"
15 #include "chrome/browser/web_applications/web_app.h" 14 #include "chrome/browser/web_applications/web_app.h"
16 #include "chrome/common/chrome_switches.h" 15 #include "chrome/common/chrome_switches.h"
17 #include "chrome/common/extensions/extension.h" 16 #include "chrome/common/extensions/extension.h"
18 #include "chrome/test/in_process_browser_test.h" 17 #include "chrome/test/in_process_browser_test.h"
19 #include "grit/generated_resources.h" 18 #include "grit/generated_resources.h"
20 #include "ui/base/l10n/l10n_util.h" 19 #include "ui/base/l10n/l10n_util.h"
21 #include "testing/gtest/include/gtest/gtest.h" 20 #include "testing/gtest/include/gtest/gtest.h"
22 #include "ui/base/animation/slide_animation.h" 21 #include "ui/base/animation/slide_animation.h"
23 #include "views/controls/button/image_button.h" 22 #include "views/controls/button/image_button.h"
23 #include "views/controls/button/menu_button.h"
24 #include "views/controls/image_view.h" 24 #include "views/controls/image_view.h"
25 #include "views/controls/label.h" 25 #include "views/controls/label.h"
26 #include "views/controls/link.h" 26 #include "views/controls/link.h"
27 #include "views/controls/menu/menu_2.h"
27 #include "views/controls/textfield/textfield.h" 28 #include "views/controls/textfield/textfield.h"
28 29
29 class PanelBrowserViewTest : public InProcessBrowserTest { 30 class PanelBrowserViewTest : public InProcessBrowserTest {
30 public: 31 public:
31 PanelBrowserViewTest() : InProcessBrowserTest() { } 32 PanelBrowserViewTest() : InProcessBrowserTest() { }
32 33
33 virtual void SetUpCommandLine(CommandLine* command_line) { 34 virtual void SetUpCommandLine(CommandLine* command_line) {
34 command_line->AppendSwitch(switches::kEnablePanels); 35 command_line->AppendSwitch(switches::kEnablePanels);
35 } 36 }
36 37
37 protected: 38 protected:
39 struct MenuItem {
40 int id;
41 bool enabled;
42 };
43
38 class MockMouseWatcher : public PanelBrowserFrameView::MouseWatcher { 44 class MockMouseWatcher : public PanelBrowserFrameView::MouseWatcher {
39 public: 45 public:
40 explicit MockMouseWatcher(PanelBrowserFrameView* view) 46 explicit MockMouseWatcher(PanelBrowserFrameView* view)
41 : PanelBrowserFrameView::MouseWatcher(view), 47 : PanelBrowserFrameView::MouseWatcher(view),
42 is_cursor_in_view_(false) { 48 is_cursor_in_view_(false) {
43 } 49 }
44 50
45 virtual bool IsCursorInViewBounds() const { 51 virtual bool IsCursorInViewBounds() const {
46 return is_cursor_in_view_; 52 return is_cursor_in_view_;
47 } 53 }
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
154 // Repeat the mouse events to this panel. 160 // Repeat the mouse events to this panel.
155 browser_views[swapped_index]->OnTitleBarMousePressed(pressed); 161 browser_views[swapped_index]->OnTitleBarMousePressed(pressed);
156 browser_views[swapped_index]->OnTitleBarMouseDragged(dragged); 162 browser_views[swapped_index]->OnTitleBarMouseDragged(dragged);
157 browser_views[swapped_index]->OnTitleBarMouseReleased(released); 163 browser_views[swapped_index]->OnTitleBarMouseReleased(released);
158 for (size_t i = 0; i < num_browser_views; ++i) { 164 for (size_t i = 0; i < num_browser_views; ++i) {
159 EXPECT_EQ(initial_bounds[i], 165 EXPECT_EQ(initial_bounds[i],
160 browser_views[i]->panel()->GetRestoredBounds()); 166 browser_views[i]->panel()->GetRestoredBounds());
161 } 167 }
162 } 168 }
163 } 169 }
170
171 void ValidateSettingsMenuItems(ui::SimpleMenuModel* settings_menu_contents,
172 size_t num_expected_menu_items,
173 const MenuItem* expected_menu_items) {
174 ASSERT_TRUE(settings_menu_contents);
175 EXPECT_EQ(static_cast<int>(num_expected_menu_items),
176 settings_menu_contents->GetItemCount());
177 for (size_t i = 0; i < num_expected_menu_items; ++i) {
178 if (expected_menu_items[i].id == -1) {
179 EXPECT_EQ(ui::MenuModel::TYPE_SEPARATOR,
180 settings_menu_contents->GetTypeAt(i));
181 } else {
182 EXPECT_EQ(expected_menu_items[i].id,
183 settings_menu_contents->GetCommandIdAt(i));
184 EXPECT_EQ(expected_menu_items[i].enabled,
185 settings_menu_contents->IsEnabledAt(i));
186 }
187 }
188 }
189
190 void TestCreateSettingsMenuForExtension(const FilePath::StringType& path,
191 Extension::Location location,
192 const std::string& homepage_url,
193 const std::string& options_page) {
194 // Creates a testing extension.
195 #if defined(OS_WIN)
196 FilePath full_path(FILE_PATH_LITERAL("c:\\"));
197 #else
198 FilePath full_path(FILE_PATH_LITERAL("/"));
199 #endif
200 full_path.Append(path);
201 DictionaryValue input_value;
202 input_value.SetString(extension_manifest_keys::kVersion, "1.0.0.0");
203 input_value.SetString(extension_manifest_keys::kName, "Sample Extension");
204 if (!homepage_url.empty()) {
205 input_value.SetString(extension_manifest_keys::kHomepageURL,
206 homepage_url);
207 }
208 if (!options_page.empty()) {
209 input_value.SetString(extension_manifest_keys::kOptionsPage,
210 options_page);
211 }
212 std::string error;
213 scoped_refptr<Extension> extension = Extension::Create(
214 full_path, location, input_value, Extension::STRICT_ERROR_CHECKS,
215 &error);
216 ASSERT_TRUE(extension.get());
217 EXPECT_STREQ("", error.c_str());
218 browser()->GetProfile()->GetExtensionService()->AddExtension(
219 extension.get());
220
221 // Makes sure that async task ExtensionPrefs::OnExtensionInstalled gets a
222 // chance to be procesed.
223 MessageLoop::current()->RunAllPending();
224
225 // Creates a panel with the app name that comes from the extension ID.
226 PanelBrowserView* browser_view = CreatePanelBrowserView(
227 web_app::GenerateApplicationNameFromExtensionId(extension->id()));
228 PanelBrowserFrameView* frame_view = browser_view->GetFrameView();
229
230 frame_view->EnsureCreateSettingsMenu();
231 ASSERT_TRUE(frame_view->settings_menu_.get());
232 ASSERT_TRUE(frame_view->settings_menu_contents_.get());
233
234 // Validates the settings menu items.
235 MenuItem expected_panel_menu_items[] = {
236 { PanelBrowserFrameView::COMMAND_NAME, false },
237 { -1, false }, // Separator
238 { PanelBrowserFrameView::COMMAND_CONFIGURE, false },
239 { PanelBrowserFrameView::COMMAND_DISABLE, false },
240 { PanelBrowserFrameView::COMMAND_UNINSTALL, false },
241 { -1, false }, // Separator
242 { PanelBrowserFrameView::COMMAND_MANAGE, true }
243 };
244 if (!homepage_url.empty())
245 expected_panel_menu_items[0].enabled = true;
246 if (!options_page.empty())
247 expected_panel_menu_items[2].enabled = true;
248 if (location != Extension::EXTERNAL_POLICY_DOWNLOAD) {
249 expected_panel_menu_items[3].enabled = true;
250 expected_panel_menu_items[4].enabled = true;
251 }
252 ValidateSettingsMenuItems(frame_view->settings_menu_contents_.get(),
253 arraysize(expected_panel_menu_items),
254 expected_panel_menu_items);
255
256 browser_view->panel()->Close();
257 }
164 }; 258 };
165 259
166 // Panel is not supported for Linux view yet. 260 // Panel is not supported for Linux view yet.
167 #if !defined(OS_LINUX) || !defined(TOOLKIT_VIEWS) 261 #if !defined(OS_LINUX) || !defined(TOOLKIT_VIEWS)
168 IN_PROC_BROWSER_TEST_F(PanelBrowserViewTest, CreatePanel) { 262 IN_PROC_BROWSER_TEST_F(PanelBrowserViewTest, CreatePanel) {
169 PanelBrowserView* browser_view = CreatePanelBrowserView("PanelTest"); 263 PanelBrowserView* browser_view = CreatePanelBrowserView("PanelTest");
170 PanelBrowserFrameView* frame_view = browser_view->GetFrameView(); 264 PanelBrowserFrameView* frame_view = browser_view->GetFrameView();
171 265
172 // The bounds animation should not be triggered when the panel is up for the 266 // The bounds animation should not be triggered when the panel is up for the
173 // first time. 267 // first time.
174 EXPECT_FALSE(browser_view->bounds_animator_.get()); 268 EXPECT_FALSE(browser_view->bounds_animator_.get());
175 269
176 // We should have icon, text, options button and close button. 270 // We should have icon, text, settings button and close button.
177 EXPECT_EQ(4, frame_view->child_count()); 271 EXPECT_EQ(4, frame_view->child_count());
178 EXPECT_TRUE(frame_view->Contains(frame_view->title_icon_)); 272 EXPECT_TRUE(frame_view->Contains(frame_view->title_icon_));
179 EXPECT_TRUE(frame_view->Contains(frame_view->title_label_)); 273 EXPECT_TRUE(frame_view->Contains(frame_view->title_label_));
180 EXPECT_TRUE(frame_view->Contains(frame_view->info_button_)); 274 EXPECT_TRUE(frame_view->Contains(frame_view->settings_button_));
181 EXPECT_TRUE(frame_view->Contains(frame_view->close_button_)); 275 EXPECT_TRUE(frame_view->Contains(frame_view->close_button_));
182 276
183 // These controls should be visible. 277 // These controls should be visible.
184 EXPECT_TRUE(frame_view->title_icon_->IsVisible()); 278 EXPECT_TRUE(frame_view->title_icon_->IsVisible());
185 EXPECT_TRUE(frame_view->title_label_->IsVisible()); 279 EXPECT_TRUE(frame_view->title_label_->IsVisible());
186 EXPECT_TRUE(frame_view->close_button_->IsVisible()); 280 EXPECT_TRUE(frame_view->close_button_->IsVisible());
187 281
188 // Validate their layouts. 282 // Validate their layouts.
189 int title_bar_height = frame_view->NonClientTopBorderHeight() - 283 int title_bar_height = frame_view->NonClientTopBorderHeight() -
190 frame_view->NonClientBorderThickness(); 284 frame_view->NonClientBorderThickness();
191 EXPECT_GT(frame_view->title_icon_->width(), 0); 285 EXPECT_GT(frame_view->title_icon_->width(), 0);
192 EXPECT_GT(frame_view->title_icon_->height(), 0); 286 EXPECT_GT(frame_view->title_icon_->height(), 0);
193 EXPECT_LT(frame_view->title_icon_->height(), title_bar_height); 287 EXPECT_LT(frame_view->title_icon_->height(), title_bar_height);
194 EXPECT_GT(frame_view->title_label_->width(), 0); 288 EXPECT_GT(frame_view->title_label_->width(), 0);
195 EXPECT_GT(frame_view->title_label_->height(), 0); 289 EXPECT_GT(frame_view->title_label_->height(), 0);
196 EXPECT_LT(frame_view->title_label_->height(), title_bar_height); 290 EXPECT_LT(frame_view->title_label_->height(), title_bar_height);
197 EXPECT_GT(frame_view->info_button_->width(), 0); 291 EXPECT_GT(frame_view->settings_button_->width(), 0);
198 EXPECT_GT(frame_view->info_button_->height(), 0); 292 EXPECT_GT(frame_view->settings_button_->height(), 0);
199 EXPECT_LT(frame_view->info_button_->height(), title_bar_height); 293 EXPECT_LT(frame_view->settings_button_->height(), title_bar_height);
200 EXPECT_GT(frame_view->close_button_->width(), 0); 294 EXPECT_GT(frame_view->close_button_->width(), 0);
201 EXPECT_GT(frame_view->close_button_->height(), 0); 295 EXPECT_GT(frame_view->close_button_->height(), 0);
202 EXPECT_LT(frame_view->close_button_->height(), title_bar_height); 296 EXPECT_LT(frame_view->close_button_->height(), title_bar_height);
203 EXPECT_LT(frame_view->title_icon_->x() + frame_view->title_icon_->width(), 297 EXPECT_LT(frame_view->title_icon_->x() + frame_view->title_icon_->width(),
204 frame_view->title_label_->x()); 298 frame_view->title_label_->x());
205 EXPECT_LT(frame_view->title_label_->x() + frame_view->title_label_->width(), 299 EXPECT_LT(frame_view->title_label_->x() + frame_view->title_label_->width(),
206 frame_view->info_button_->x()); 300 frame_view->settings_button_->x());
207 EXPECT_LT( 301 EXPECT_LT(
208 frame_view->info_button_->x() + frame_view->info_button_->width(), 302 frame_view->settings_button_->x() + frame_view->settings_button_->width(),
209 frame_view->close_button_->x()); 303 frame_view->close_button_->x());
210 304
211 // Validate that the controls should be updated when the activation state is 305 // Validate that the controls should be updated when the activation state is
212 // changed. 306 // changed.
213 frame_view->UpdateControlStyles(PanelBrowserFrameView::PAINT_AS_ACTIVE); 307 frame_view->UpdateControlStyles(PanelBrowserFrameView::PAINT_AS_ACTIVE);
214 gfx::Font title_label_font1 = frame_view->title_label_->font(); 308 gfx::Font title_label_font1 = frame_view->title_label_->font();
215 frame_view->UpdateControlStyles(PanelBrowserFrameView::PAINT_AS_INACTIVE); 309 frame_view->UpdateControlStyles(PanelBrowserFrameView::PAINT_AS_INACTIVE);
216 gfx::Font title_label_font2 = frame_view->title_label_->font(); 310 gfx::Font title_label_font2 = frame_view->title_label_->font();
217 EXPECT_NE(title_label_font1.GetStyle(), title_label_font2.GetStyle()); 311 EXPECT_NE(title_label_font1.GetStyle(), title_label_font2.GetStyle());
218 } 312 }
219 313
220 IN_PROC_BROWSER_TEST_F(PanelBrowserViewTest, ShowOrHideInfoButton) { 314 IN_PROC_BROWSER_TEST_F(PanelBrowserViewTest, ShowOrHideSettingsButton) {
221 PanelBrowserView* browser_view = CreatePanelBrowserView("PanelTest"); 315 PanelBrowserView* browser_view = CreatePanelBrowserView("PanelTest");
222 PanelBrowserFrameView* frame_view = browser_view->GetFrameView(); 316 PanelBrowserFrameView* frame_view = browser_view->GetFrameView();
223 317
224 // Create and hook up the MockMouseWatcher so that we can simulate if the 318 // Create and hook up the MockMouseWatcher so that we can simulate if the
225 // mouse is over the panel. 319 // mouse is over the panel.
226 MockMouseWatcher* mouse_watcher = new MockMouseWatcher(frame_view); 320 MockMouseWatcher* mouse_watcher = new MockMouseWatcher(frame_view);
227 frame_view->set_mouse_watcher(mouse_watcher); 321 frame_view->set_mouse_watcher(mouse_watcher);
228 322
229 // When the panel is created, it is active. Since we cannot programatically 323 // When the panel is created, it is active. Since we cannot programatically
230 // bring the panel back to active state once it is deactivated, we have to 324 // bring the panel back to active state once it is deactivated, we have to
231 // test the cases that the panel is active first. 325 // test the cases that the panel is active first.
232 EXPECT_TRUE(browser_view->panel()->IsActive()); 326 EXPECT_TRUE(browser_view->panel()->IsActive());
233 327
234 // When the panel is active, the info button should always be visible. 328 // When the panel is active, the settings button should always be visible.
235 mouse_watcher->MoveMouse(true); 329 mouse_watcher->MoveMouse(true);
236 EXPECT_TRUE(frame_view->info_button_->IsVisible()); 330 EXPECT_TRUE(frame_view->settings_button_->IsVisible());
237 mouse_watcher->MoveMouse(false); 331 mouse_watcher->MoveMouse(false);
238 EXPECT_TRUE(frame_view->info_button_->IsVisible()); 332 EXPECT_TRUE(frame_view->settings_button_->IsVisible());
239 333
240 // When the panel is inactive, the info button is active per the mouse over 334 // When the panel is inactive, the options button is active per the mouse over
241 // the panel or not. 335 // the panel or not.
242 browser_view->panel()->Deactivate(); 336 browser_view->panel()->Deactivate();
243 EXPECT_FALSE(browser_view->panel()->IsActive()); 337 EXPECT_FALSE(browser_view->panel()->IsActive());
244 338
245 mouse_watcher->MoveMouse(true); 339 mouse_watcher->MoveMouse(true);
246 EXPECT_TRUE(frame_view->info_button_->IsVisible()); 340 EXPECT_TRUE(frame_view->settings_button_->IsVisible());
247 mouse_watcher->MoveMouse(false); 341 mouse_watcher->MoveMouse(false);
248 EXPECT_FALSE(frame_view->info_button_->IsVisible()); 342 EXPECT_FALSE(frame_view->settings_button_->IsVisible());
249 } 343 }
250 344
251 IN_PROC_BROWSER_TEST_F(PanelBrowserViewTest, TitleBarMouseEvent) { 345 IN_PROC_BROWSER_TEST_F(PanelBrowserViewTest, TitleBarMouseEvent) {
252 // TODO(jianli): Move the test to platform-independent PanelManager unittest. 346 // TODO(jianli): Move the test to platform-independent PanelManager unittest.
253 347
254 // Creates the 1st panel. 348 // Creates the 1st panel.
255 PanelBrowserView* browser_view1 = CreatePanelBrowserView("PanelTest1"); 349 PanelBrowserView* browser_view1 = CreatePanelBrowserView("PanelTest1");
256 350
257 // The delta is from the pressed location which is the left-top corner of the 351 // The delta is from the pressed location which is the left-top corner of the
258 // panel to drag. 352 // panel to drag.
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
416 false); 510 false);
417 } 511 }
418 512
419 // Closes all panels. 513 // Closes all panels.
420 for (size_t i = 0; i < browser_view_count; ++i) { 514 for (size_t i = 0; i < browser_view_count; ++i) {
421 browser_views[i]->panel()->Close(); 515 browser_views[i]->panel()->Close();
422 EXPECT_FALSE(browser_views[i]->panel()); 516 EXPECT_FALSE(browser_views[i]->panel());
423 } 517 }
424 } 518 }
425 519
426 IN_PROC_BROWSER_TEST_F(PanelBrowserViewTest, AboutPanelBubble) {
427 ExtensionService* extension_service =
428 browser()->GetProfile()->GetExtensionService();
429
430 // Create a testing extension.
431 #if defined(OS_WIN)
432 FilePath path(FILE_PATH_LITERAL("c:\\foo"));
433 #else
434 FilePath path(FILE_PATH_LITERAL("/foo"));
435 #endif
436 DictionaryValue input_value;
437 input_value.SetString(extension_manifest_keys::kVersion, "1.0.0.0");
438 input_value.SetString(extension_manifest_keys::kName, "Sample Extension");
439 input_value.SetString(extension_manifest_keys::kDescription,
440 "Sample Description");
441 scoped_refptr<Extension> extension(Extension::Create(path, Extension::INVALID,
442 input_value, Extension::STRICT_ERROR_CHECKS, NULL));
443 ASSERT_TRUE(extension.get());
444 extension_service->AddExtension(extension.get());
445 // Make sure that async task ExtensionPrefs::OnExtensionInstalled gets a
446 // chance to be procesed.
447 MessageLoop::current()->RunAllPending();
448
449 extension_service->extension_prefs()->OnExtensionInstalled(
450 extension, Extension::ENABLED);
451
452 // Create a panel with the app name that comes from the extension ID.
453 PanelBrowserView* browser_view = CreatePanelBrowserView(
454 web_app::GenerateApplicationNameFromExtensionId(extension->id()));
455
456 AboutPanelBubble* bubble = AboutPanelBubble::Show(
457 browser_view->GetWidget(),
458 gfx::Rect(),
459 BubbleBorder::BOTTOM_RIGHT,
460 SkBitmap(),
461 browser_view->browser());
462 AboutPanelBubble::AboutPanelBubbleView* contents =
463 static_cast<AboutPanelBubble::AboutPanelBubbleView*>(bubble->contents());
464
465 // We should have the expected controls.
466 EXPECT_EQ(6, contents->child_count());
467 EXPECT_TRUE(contents->Contains(contents->icon_));
468 EXPECT_TRUE(contents->Contains(contents->title_));
469 EXPECT_TRUE(contents->Contains(contents->install_date_));
470 EXPECT_TRUE(contents->Contains(contents->description_));
471 EXPECT_TRUE(contents->Contains(contents->uninstall_link_));
472 EXPECT_TRUE(contents->Contains(contents->report_abuse_link_));
473
474 // These controls should be visible.
475 EXPECT_TRUE(contents->icon_->IsVisible());
476 EXPECT_TRUE(contents->title_->IsVisible());
477 EXPECT_TRUE(contents->install_date_->IsVisible());
478 EXPECT_TRUE(contents->description_->IsVisible());
479 EXPECT_TRUE(contents->uninstall_link_->IsVisible());
480 EXPECT_TRUE(contents->report_abuse_link_->IsVisible());
481
482 // Validate their layouts.
483 EXPECT_GT(contents->title_->x(), contents->icon_->x());
484 EXPECT_GT(contents->title_->width(), 0);
485 EXPECT_GT(contents->title_->height(), 0);
486 EXPECT_EQ(contents->install_date_->x(), contents->title_->x());
487 EXPECT_GT(contents->install_date_->y(), contents->title_->y());
488 EXPECT_GT(contents->install_date_->width(), 0);
489 EXPECT_GT(contents->install_date_->height(), 0);
490 EXPECT_EQ(contents->description_->x(), contents->install_date_->x());
491 EXPECT_GT(contents->description_->y(), contents->install_date_->y());
492 EXPECT_GT(contents->description_->width(), 0);
493 EXPECT_GT(contents->description_->height(), 0);
494 EXPECT_EQ(contents->uninstall_link_->x(), contents->description_->x());
495 EXPECT_GT(contents->uninstall_link_->y(), contents->description_->y());
496 EXPECT_GT(contents->uninstall_link_->width(), 0);
497 EXPECT_GT(contents->uninstall_link_->height(), 0);
498 EXPECT_GT(contents->report_abuse_link_->x(), contents->uninstall_link_->x());
499 EXPECT_EQ(contents->report_abuse_link_->y(), contents->uninstall_link_->y());
500 EXPECT_GT(contents->report_abuse_link_->width(), 0);
501 EXPECT_GT(contents->report_abuse_link_->height(), 0);
502
503 // Validates the texts.
504 base::Time install_time =
505 extension_service->extension_prefs()->GetInstallTime(extension->id());
506 string16 time_text = l10n_util::GetStringFUTF16(
507 IDS_ABOUT_PANEL_BUBBLE_EXTENSION_INSTALL_DATE,
508 base::TimeFormatFriendlyDate(
509 extension_service->extension_prefs()->GetInstallTime(
510 extension->id())));
511 EXPECT_STREQ(UTF16ToUTF8(time_text).c_str(),
512 WideToUTF8(contents->install_date_->GetText()).c_str());
513 EXPECT_STREQ(extension->description().c_str(),
514 UTF16ToUTF8(contents->description_->text()).c_str());
515 }
516
517 IN_PROC_BROWSER_TEST_F(PanelBrowserViewTest, SetBoundsAnimation) { 520 IN_PROC_BROWSER_TEST_F(PanelBrowserViewTest, SetBoundsAnimation) {
518 PanelBrowserView* browser_view = CreatePanelBrowserView("PanelTest"); 521 PanelBrowserView* browser_view = CreatePanelBrowserView("PanelTest");
519 522
520 // Validate that animation should be triggered when SetBounds is called. 523 // Validate that animation should be triggered when SetBounds is called.
521 gfx::Rect target_bounds(browser_view->GetBounds()); 524 gfx::Rect target_bounds(browser_view->GetBounds());
522 target_bounds.Offset(20, -30); 525 target_bounds.Offset(20, -30);
523 target_bounds.set_width(target_bounds.width() + 100); 526 target_bounds.set_width(target_bounds.width() + 100);
524 target_bounds.set_height(target_bounds.height() + 50); 527 target_bounds.set_height(target_bounds.height() + 50);
525 browser_view->SetBounds(target_bounds); 528 browser_view->SetBounds(target_bounds);
526 ASSERT_TRUE(browser_view->bounds_animator_.get()); 529 ASSERT_TRUE(browser_view->bounds_animator_.get());
(...skipping 16 matching lines...) Expand all
543 views::MouseEvent dragged(ui::ET_MOUSE_DRAGGED, 546 views::MouseEvent dragged(ui::ET_MOUSE_DRAGGED,
544 target_bounds.x() + 5, 547 target_bounds.x() + 5,
545 target_bounds.y() + 5, 548 target_bounds.y() + 5,
546 ui::EF_LEFT_BUTTON_DOWN); 549 ui::EF_LEFT_BUTTON_DOWN);
547 browser_view->OnTitleBarMouseDragged(dragged); 550 browser_view->OnTitleBarMouseDragged(dragged);
548 EXPECT_FALSE(browser_view->bounds_animator_->is_animating()); 551 EXPECT_FALSE(browser_view->bounds_animator_->is_animating());
549 browser_view->OnTitleBarMouseCaptureLost(); 552 browser_view->OnTitleBarMouseCaptureLost();
550 553
551 browser_view->panel()->Close(); 554 browser_view->panel()->Close();
552 } 555 }
556
557 IN_PROC_BROWSER_TEST_F(PanelBrowserViewTest, CreateSettingsMenu) {
558 TestCreateSettingsMenuForExtension(
559 FILE_PATH_LITERAL("extension1"), Extension::EXTERNAL_POLICY_DOWNLOAD,
560 "", "");
561 TestCreateSettingsMenuForExtension(
562 FILE_PATH_LITERAL("extension2"), Extension::INVALID,
563 "http://home", "options.html");
564 }
553 #endif 565 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698