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

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 ValidateWrenchMenuItems(ui::SimpleMenuModel* wrench_menu_contents,
jennb 2011/06/01 22:24:14 which parameter is the expected menu items?
jianli 2011/06/01 23:23:38 Renamed items to prefix with expected.
172 size_t count,
173 MenuItem* items) {
174 ASSERT_TRUE(wrench_menu_contents);
175 EXPECT_EQ(static_cast<int>(count), wrench_menu_contents->GetItemCount());
176 for (size_t i = 0; i < count; ++i) {
177 if (items[i].id == -1) {
178 EXPECT_EQ(ui::MenuModel::TYPE_SEPARATOR,
179 wrench_menu_contents->GetTypeAt(i));
180 } else {
181 EXPECT_EQ(items[i].id, wrench_menu_contents->GetCommandIdAt(i));
182 EXPECT_EQ(items[i].enabled, wrench_menu_contents->IsEnabledAt(i));
183 }
184 }
185 }
186
187 void TestCreateWrenchMenuForExtension(const FilePath::StringType& path,
188 Extension::Location location,
189 const std::string& homepage_url,
190 const std::string& options_page) {
191 // Creates a testing extension.
192 #if defined(OS_WIN)
193 FilePath full_path(FILE_PATH_LITERAL("c:\\"));
194 #else
195 FilePath full_path(FILE_PATH_LITERAL("/"));
196 #endif
197 full_path.Append(path);
198 DictionaryValue input_value;
199 input_value.SetString(extension_manifest_keys::kVersion, "1.0.0.0");
200 input_value.SetString(extension_manifest_keys::kName, "Sample Extension");
201 if (!homepage_url.empty()) {
202 input_value.SetString(extension_manifest_keys::kHomepageURL,
203 homepage_url);
204 }
205 if (!options_page.empty()) {
206 input_value.SetString(extension_manifest_keys::kOptionsPage,
207 options_page);
208 }
209 std::string error;
210 scoped_refptr<Extension> extension = Extension::Create(
211 full_path, location, input_value, Extension::STRICT_ERROR_CHECKS,
212 &error);
213 ASSERT_TRUE(extension.get());
214 EXPECT_STREQ("", error.c_str());
215 browser()->GetProfile()->GetExtensionService()->AddExtension(
216 extension.get());
217
218 // Makes sure that async task ExtensionPrefs::OnExtensionInstalled gets a
219 // chance to be procesed.
220 MessageLoop::current()->RunAllPending();
221
222 // Creates a panel with the app name that comes from the extension ID.
223 PanelBrowserView* browser_view = CreatePanelBrowserView(
224 web_app::GenerateApplicationNameFromExtensionId(extension->id()));
225 PanelBrowserFrameView* frame_view = browser_view->GetFrameView();
226
227 frame_view->EnsureCreateWrenchMenu();
228 ASSERT_TRUE(frame_view->wrench_menu_.get());
229 ASSERT_TRUE(frame_view->wrench_menu_contents_.get());
230
231 // Validates the wrench menu items.
232 MenuItem panel_menu[] = {
233 { PanelBrowserFrameView::COMMAND_NAME, false },
234 { -1, false }, // Separator
235 { PanelBrowserFrameView::COMMAND_CONFIGURE, false },
236 { PanelBrowserFrameView::COMMAND_DISABLE, false },
237 { PanelBrowserFrameView::COMMAND_UNINSTALL, false },
238 { -1, false }, // Separator
239 { PanelBrowserFrameView::COMMAND_MANAGE, true }
240 };
241 if (!homepage_url.empty())
242 panel_menu[0].enabled = true;
243 if (!options_page.empty())
244 panel_menu[2].enabled = true;
245 if (location != Extension::EXTERNAL_POLICY_DOWNLOAD) {
246 panel_menu[3].enabled = true;
247 panel_menu[4].enabled = true;
248 }
249 size_t panel_menu_count = arraysize(panel_menu);
250 ValidateWrenchMenuItems(frame_view->wrench_menu_contents_.get(),
251 panel_menu_count,
252 panel_menu);
253
254 browser_view->panel()->Close();
255 }
164 }; 256 };
165 257
166 // Panel is not supported for Linux view yet. 258 // Panel is not supported for Linux view yet.
167 #if !defined(OS_LINUX) || !defined(TOOLKIT_VIEWS) 259 #if !defined(OS_LINUX) || !defined(TOOLKIT_VIEWS)
168 IN_PROC_BROWSER_TEST_F(PanelBrowserViewTest, CreatePanel) { 260 IN_PROC_BROWSER_TEST_F(PanelBrowserViewTest, CreatePanel) {
169 PanelBrowserView* browser_view = CreatePanelBrowserView("PanelTest"); 261 PanelBrowserView* browser_view = CreatePanelBrowserView("PanelTest");
170 PanelBrowserFrameView* frame_view = browser_view->GetFrameView(); 262 PanelBrowserFrameView* frame_view = browser_view->GetFrameView();
171 263
172 // The bounds animation should not be triggered when the panel is up for the 264 // The bounds animation should not be triggered when the panel is up for the
173 // first time. 265 // first time.
174 EXPECT_FALSE(browser_view->bounds_animator_.get()); 266 EXPECT_FALSE(browser_view->bounds_animator_.get());
175 267
176 // We should have icon, text, options button and close button. 268 // We should have icon, text, wrench button and close button.
177 EXPECT_EQ(4, frame_view->child_count()); 269 EXPECT_EQ(4, frame_view->child_count());
178 EXPECT_TRUE(frame_view->Contains(frame_view->title_icon_)); 270 EXPECT_TRUE(frame_view->Contains(frame_view->title_icon_));
179 EXPECT_TRUE(frame_view->Contains(frame_view->title_label_)); 271 EXPECT_TRUE(frame_view->Contains(frame_view->title_label_));
180 EXPECT_TRUE(frame_view->Contains(frame_view->info_button_)); 272 EXPECT_TRUE(frame_view->Contains(frame_view->wrench_button_));
181 EXPECT_TRUE(frame_view->Contains(frame_view->close_button_)); 273 EXPECT_TRUE(frame_view->Contains(frame_view->close_button_));
182 274
183 // These controls should be visible. 275 // These controls should be visible.
184 EXPECT_TRUE(frame_view->title_icon_->IsVisible()); 276 EXPECT_TRUE(frame_view->title_icon_->IsVisible());
185 EXPECT_TRUE(frame_view->title_label_->IsVisible()); 277 EXPECT_TRUE(frame_view->title_label_->IsVisible());
186 EXPECT_TRUE(frame_view->close_button_->IsVisible()); 278 EXPECT_TRUE(frame_view->close_button_->IsVisible());
187 279
188 // Validate their layouts. 280 // Validate their layouts.
189 int title_bar_height = frame_view->NonClientTopBorderHeight() - 281 int title_bar_height = frame_view->NonClientTopBorderHeight() -
190 frame_view->NonClientBorderThickness(); 282 frame_view->NonClientBorderThickness();
191 EXPECT_GT(frame_view->title_icon_->width(), 0); 283 EXPECT_GT(frame_view->title_icon_->width(), 0);
192 EXPECT_GT(frame_view->title_icon_->height(), 0); 284 EXPECT_GT(frame_view->title_icon_->height(), 0);
193 EXPECT_LT(frame_view->title_icon_->height(), title_bar_height); 285 EXPECT_LT(frame_view->title_icon_->height(), title_bar_height);
194 EXPECT_GT(frame_view->title_label_->width(), 0); 286 EXPECT_GT(frame_view->title_label_->width(), 0);
195 EXPECT_GT(frame_view->title_label_->height(), 0); 287 EXPECT_GT(frame_view->title_label_->height(), 0);
196 EXPECT_LT(frame_view->title_label_->height(), title_bar_height); 288 EXPECT_LT(frame_view->title_label_->height(), title_bar_height);
197 EXPECT_GT(frame_view->info_button_->width(), 0); 289 EXPECT_GT(frame_view->wrench_button_->width(), 0);
198 EXPECT_GT(frame_view->info_button_->height(), 0); 290 EXPECT_GT(frame_view->wrench_button_->height(), 0);
199 EXPECT_LT(frame_view->info_button_->height(), title_bar_height); 291 EXPECT_LT(frame_view->wrench_button_->height(), title_bar_height);
200 EXPECT_GT(frame_view->close_button_->width(), 0); 292 EXPECT_GT(frame_view->close_button_->width(), 0);
201 EXPECT_GT(frame_view->close_button_->height(), 0); 293 EXPECT_GT(frame_view->close_button_->height(), 0);
202 EXPECT_LT(frame_view->close_button_->height(), title_bar_height); 294 EXPECT_LT(frame_view->close_button_->height(), title_bar_height);
203 EXPECT_LT(frame_view->title_icon_->x() + frame_view->title_icon_->width(), 295 EXPECT_LT(frame_view->title_icon_->x() + frame_view->title_icon_->width(),
204 frame_view->title_label_->x()); 296 frame_view->title_label_->x());
205 EXPECT_LT(frame_view->title_label_->x() + frame_view->title_label_->width(), 297 EXPECT_LT(frame_view->title_label_->x() + frame_view->title_label_->width(),
206 frame_view->info_button_->x()); 298 frame_view->wrench_button_->x());
207 EXPECT_LT( 299 EXPECT_LT(
208 frame_view->info_button_->x() + frame_view->info_button_->width(), 300 frame_view->wrench_button_->x() + frame_view->wrench_button_->width(),
209 frame_view->close_button_->x()); 301 frame_view->close_button_->x());
210 302
211 // Validate that the controls should be updated when the activation state is 303 // Validate that the controls should be updated when the activation state is
212 // changed. 304 // changed.
213 frame_view->UpdateControlStyles(PanelBrowserFrameView::PAINT_AS_ACTIVE); 305 frame_view->UpdateControlStyles(PanelBrowserFrameView::PAINT_AS_ACTIVE);
214 gfx::Font title_label_font1 = frame_view->title_label_->font(); 306 gfx::Font title_label_font1 = frame_view->title_label_->font();
215 frame_view->UpdateControlStyles(PanelBrowserFrameView::PAINT_AS_INACTIVE); 307 frame_view->UpdateControlStyles(PanelBrowserFrameView::PAINT_AS_INACTIVE);
216 gfx::Font title_label_font2 = frame_view->title_label_->font(); 308 gfx::Font title_label_font2 = frame_view->title_label_->font();
217 EXPECT_NE(title_label_font1.GetStyle(), title_label_font2.GetStyle()); 309 EXPECT_NE(title_label_font1.GetStyle(), title_label_font2.GetStyle());
218 } 310 }
219 311
220 IN_PROC_BROWSER_TEST_F(PanelBrowserViewTest, ShowOrHideInfoButton) { 312 IN_PROC_BROWSER_TEST_F(PanelBrowserViewTest, ShowOrHideWrenchButton) {
221 PanelBrowserView* browser_view = CreatePanelBrowserView("PanelTest"); 313 PanelBrowserView* browser_view = CreatePanelBrowserView("PanelTest");
222 PanelBrowserFrameView* frame_view = browser_view->GetFrameView(); 314 PanelBrowserFrameView* frame_view = browser_view->GetFrameView();
223 315
224 // Create and hook up the MockMouseWatcher so that we can simulate if the 316 // Create and hook up the MockMouseWatcher so that we can simulate if the
225 // mouse is over the panel. 317 // mouse is over the panel.
226 MockMouseWatcher* mouse_watcher = new MockMouseWatcher(frame_view); 318 MockMouseWatcher* mouse_watcher = new MockMouseWatcher(frame_view);
227 frame_view->set_mouse_watcher(mouse_watcher); 319 frame_view->set_mouse_watcher(mouse_watcher);
228 320
229 // When the panel is created, it is active. Since we cannot programatically 321 // 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 322 // bring the panel back to active state once it is deactivated, we have to
231 // test the cases that the panel is active first. 323 // test the cases that the panel is active first.
232 EXPECT_TRUE(browser_view->panel()->IsActive()); 324 EXPECT_TRUE(browser_view->panel()->IsActive());
233 325
234 // When the panel is active, the info button should always be visible. 326 // When the panel is active, the wrench button should always be visible.
235 mouse_watcher->MoveMouse(true); 327 mouse_watcher->MoveMouse(true);
236 EXPECT_TRUE(frame_view->info_button_->IsVisible()); 328 EXPECT_TRUE(frame_view->wrench_button_->IsVisible());
237 mouse_watcher->MoveMouse(false); 329 mouse_watcher->MoveMouse(false);
238 EXPECT_TRUE(frame_view->info_button_->IsVisible()); 330 EXPECT_TRUE(frame_view->wrench_button_->IsVisible());
239 331
240 // When the panel is inactive, the info button is active per the mouse over 332 // When the panel is inactive, the options button is active per the mouse over
241 // the panel or not. 333 // the panel or not.
242 browser_view->panel()->Deactivate(); 334 browser_view->panel()->Deactivate();
243 EXPECT_FALSE(browser_view->panel()->IsActive()); 335 EXPECT_FALSE(browser_view->panel()->IsActive());
244 336
245 mouse_watcher->MoveMouse(true); 337 mouse_watcher->MoveMouse(true);
246 EXPECT_TRUE(frame_view->info_button_->IsVisible()); 338 EXPECT_TRUE(frame_view->wrench_button_->IsVisible());
247 mouse_watcher->MoveMouse(false); 339 mouse_watcher->MoveMouse(false);
248 EXPECT_FALSE(frame_view->info_button_->IsVisible()); 340 EXPECT_FALSE(frame_view->wrench_button_->IsVisible());
249 } 341 }
250 342
251 IN_PROC_BROWSER_TEST_F(PanelBrowserViewTest, TitleBarMouseEvent) { 343 IN_PROC_BROWSER_TEST_F(PanelBrowserViewTest, TitleBarMouseEvent) {
252 // TODO(jianli): Move the test to platform-independent PanelManager unittest. 344 // TODO(jianli): Move the test to platform-independent PanelManager unittest.
253 345
254 // Creates the 1st panel. 346 // Creates the 1st panel.
255 PanelBrowserView* browser_view1 = CreatePanelBrowserView("PanelTest1"); 347 PanelBrowserView* browser_view1 = CreatePanelBrowserView("PanelTest1");
256 348
257 // The delta is from the pressed location which is the left-top corner of the 349 // The delta is from the pressed location which is the left-top corner of the
258 // panel to drag. 350 // panel to drag.
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
416 false); 508 false);
417 } 509 }
418 510
419 // Closes all panels. 511 // Closes all panels.
420 for (size_t i = 0; i < browser_view_count; ++i) { 512 for (size_t i = 0; i < browser_view_count; ++i) {
421 browser_views[i]->panel()->Close(); 513 browser_views[i]->panel()->Close();
422 EXPECT_FALSE(browser_views[i]->panel()); 514 EXPECT_FALSE(browser_views[i]->panel());
423 } 515 }
424 } 516 }
425 517
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) { 518 IN_PROC_BROWSER_TEST_F(PanelBrowserViewTest, SetBoundsAnimation) {
518 PanelBrowserView* browser_view = CreatePanelBrowserView("PanelTest"); 519 PanelBrowserView* browser_view = CreatePanelBrowserView("PanelTest");
519 520
520 // Validate that animation should be triggered when SetBounds is called. 521 // Validate that animation should be triggered when SetBounds is called.
521 gfx::Rect target_bounds(browser_view->GetBounds()); 522 gfx::Rect target_bounds(browser_view->GetBounds());
522 target_bounds.Offset(20, -30); 523 target_bounds.Offset(20, -30);
523 target_bounds.set_width(target_bounds.width() + 100); 524 target_bounds.set_width(target_bounds.width() + 100);
524 target_bounds.set_height(target_bounds.height() + 50); 525 target_bounds.set_height(target_bounds.height() + 50);
525 browser_view->SetBounds(target_bounds); 526 browser_view->SetBounds(target_bounds);
526 ASSERT_TRUE(browser_view->bounds_animator_.get()); 527 ASSERT_TRUE(browser_view->bounds_animator_.get());
(...skipping 16 matching lines...) Expand all
543 views::MouseEvent dragged(ui::ET_MOUSE_DRAGGED, 544 views::MouseEvent dragged(ui::ET_MOUSE_DRAGGED,
544 target_bounds.x() + 5, 545 target_bounds.x() + 5,
545 target_bounds.y() + 5, 546 target_bounds.y() + 5,
546 ui::EF_LEFT_BUTTON_DOWN); 547 ui::EF_LEFT_BUTTON_DOWN);
547 browser_view->OnTitleBarMouseDragged(dragged); 548 browser_view->OnTitleBarMouseDragged(dragged);
548 EXPECT_FALSE(browser_view->bounds_animator_->is_animating()); 549 EXPECT_FALSE(browser_view->bounds_animator_->is_animating());
549 browser_view->OnTitleBarMouseCaptureLost(); 550 browser_view->OnTitleBarMouseCaptureLost();
550 551
551 browser_view->panel()->Close(); 552 browser_view->panel()->Close();
552 } 553 }
554
555 IN_PROC_BROWSER_TEST_F(PanelBrowserViewTest, CreateWrenchMenu) {
556 TestCreateWrenchMenuForExtension(
557 FILE_PATH_LITERAL("extension1"), Extension::EXTERNAL_POLICY_DOWNLOAD,
558 "", "");
559 TestCreateWrenchMenuForExtension(
560 FILE_PATH_LITERAL("extension2"), Extension::INVALID,
561 "http://home", "options.html");
562 }
553 #endif 563 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698