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

Unified 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, 7 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/panels/panel_browser_view_browsertest.cc
===================================================================
--- chrome/browser/ui/panels/panel_browser_view_browsertest.cc (revision 87324)
+++ chrome/browser/ui/panels/panel_browser_view_browsertest.cc (working copy)
@@ -8,7 +8,6 @@
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_window.h"
-#include "chrome/browser/ui/panels/about_panel_bubble.h"
#include "chrome/browser/ui/panels/panel.h"
#include "chrome/browser/ui/panels/panel_browser_frame_view.h"
#include "chrome/browser/ui/panels/panel_browser_view.h"
@@ -21,9 +20,11 @@
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/base/animation/slide_animation.h"
#include "views/controls/button/image_button.h"
+#include "views/controls/button/menu_button.h"
#include "views/controls/image_view.h"
#include "views/controls/label.h"
#include "views/controls/link.h"
+#include "views/controls/menu/menu_2.h"
#include "views/controls/textfield/textfield.h"
class PanelBrowserViewTest : public InProcessBrowserTest {
@@ -35,6 +36,11 @@
}
protected:
+ struct MenuItem {
+ int id;
+ bool enabled;
+ };
+
class MockMouseWatcher : public PanelBrowserFrameView::MouseWatcher {
public:
explicit MockMouseWatcher(PanelBrowserFrameView* view)
@@ -161,6 +167,94 @@
}
}
}
+
+ void ValidateSettingsMenuItems(ui::SimpleMenuModel* settings_menu_contents,
+ size_t num_expected_menu_items,
+ const MenuItem* expected_menu_items) {
+ ASSERT_TRUE(settings_menu_contents);
+ EXPECT_EQ(static_cast<int>(num_expected_menu_items),
+ settings_menu_contents->GetItemCount());
+ for (size_t i = 0; i < num_expected_menu_items; ++i) {
+ if (expected_menu_items[i].id == -1) {
+ EXPECT_EQ(ui::MenuModel::TYPE_SEPARATOR,
+ settings_menu_contents->GetTypeAt(i));
+ } else {
+ EXPECT_EQ(expected_menu_items[i].id,
+ settings_menu_contents->GetCommandIdAt(i));
+ EXPECT_EQ(expected_menu_items[i].enabled,
+ settings_menu_contents->IsEnabledAt(i));
+ }
+ }
+ }
+
+ void TestCreateSettingsMenuForExtension(const FilePath::StringType& path,
+ Extension::Location location,
+ const std::string& homepage_url,
+ const std::string& options_page) {
+ // Creates a testing extension.
+#if defined(OS_WIN)
+ FilePath full_path(FILE_PATH_LITERAL("c:\\"));
+#else
+ FilePath full_path(FILE_PATH_LITERAL("/"));
+#endif
+ full_path.Append(path);
+ DictionaryValue input_value;
+ input_value.SetString(extension_manifest_keys::kVersion, "1.0.0.0");
+ input_value.SetString(extension_manifest_keys::kName, "Sample Extension");
+ if (!homepage_url.empty()) {
+ input_value.SetString(extension_manifest_keys::kHomepageURL,
+ homepage_url);
+ }
+ if (!options_page.empty()) {
+ input_value.SetString(extension_manifest_keys::kOptionsPage,
+ options_page);
+ }
+ std::string error;
+ scoped_refptr<Extension> extension = Extension::Create(
+ full_path, location, input_value, Extension::STRICT_ERROR_CHECKS,
+ &error);
+ ASSERT_TRUE(extension.get());
+ EXPECT_STREQ("", error.c_str());
+ browser()->GetProfile()->GetExtensionService()->AddExtension(
+ extension.get());
+
+ // Makes sure that async task ExtensionPrefs::OnExtensionInstalled gets a
+ // chance to be procesed.
+ MessageLoop::current()->RunAllPending();
+
+ // Creates a panel with the app name that comes from the extension ID.
+ PanelBrowserView* browser_view = CreatePanelBrowserView(
+ web_app::GenerateApplicationNameFromExtensionId(extension->id()));
+ PanelBrowserFrameView* frame_view = browser_view->GetFrameView();
+
+ frame_view->EnsureCreateSettingsMenu();
+ ASSERT_TRUE(frame_view->settings_menu_.get());
+ ASSERT_TRUE(frame_view->settings_menu_contents_.get());
+
+ // Validates the settings menu items.
+ MenuItem expected_panel_menu_items[] = {
+ { PanelBrowserFrameView::COMMAND_NAME, false },
+ { -1, false }, // Separator
+ { PanelBrowserFrameView::COMMAND_CONFIGURE, false },
+ { PanelBrowserFrameView::COMMAND_DISABLE, false },
+ { PanelBrowserFrameView::COMMAND_UNINSTALL, false },
+ { -1, false }, // Separator
+ { PanelBrowserFrameView::COMMAND_MANAGE, true }
+ };
+ if (!homepage_url.empty())
+ expected_panel_menu_items[0].enabled = true;
+ if (!options_page.empty())
+ expected_panel_menu_items[2].enabled = true;
+ if (location != Extension::EXTERNAL_POLICY_DOWNLOAD) {
+ expected_panel_menu_items[3].enabled = true;
+ expected_panel_menu_items[4].enabled = true;
+ }
+ ValidateSettingsMenuItems(frame_view->settings_menu_contents_.get(),
+ arraysize(expected_panel_menu_items),
+ expected_panel_menu_items);
+
+ browser_view->panel()->Close();
+ }
};
// Panel is not supported for Linux view yet.
@@ -173,11 +267,11 @@
// first time.
EXPECT_FALSE(browser_view->bounds_animator_.get());
- // We should have icon, text, options button and close button.
+ // We should have icon, text, settings button and close button.
EXPECT_EQ(4, frame_view->child_count());
EXPECT_TRUE(frame_view->Contains(frame_view->title_icon_));
EXPECT_TRUE(frame_view->Contains(frame_view->title_label_));
- EXPECT_TRUE(frame_view->Contains(frame_view->info_button_));
+ EXPECT_TRUE(frame_view->Contains(frame_view->settings_button_));
EXPECT_TRUE(frame_view->Contains(frame_view->close_button_));
// These controls should be visible.
@@ -194,18 +288,18 @@
EXPECT_GT(frame_view->title_label_->width(), 0);
EXPECT_GT(frame_view->title_label_->height(), 0);
EXPECT_LT(frame_view->title_label_->height(), title_bar_height);
- EXPECT_GT(frame_view->info_button_->width(), 0);
- EXPECT_GT(frame_view->info_button_->height(), 0);
- EXPECT_LT(frame_view->info_button_->height(), title_bar_height);
+ EXPECT_GT(frame_view->settings_button_->width(), 0);
+ EXPECT_GT(frame_view->settings_button_->height(), 0);
+ EXPECT_LT(frame_view->settings_button_->height(), title_bar_height);
EXPECT_GT(frame_view->close_button_->width(), 0);
EXPECT_GT(frame_view->close_button_->height(), 0);
EXPECT_LT(frame_view->close_button_->height(), title_bar_height);
EXPECT_LT(frame_view->title_icon_->x() + frame_view->title_icon_->width(),
frame_view->title_label_->x());
EXPECT_LT(frame_view->title_label_->x() + frame_view->title_label_->width(),
- frame_view->info_button_->x());
+ frame_view->settings_button_->x());
EXPECT_LT(
- frame_view->info_button_->x() + frame_view->info_button_->width(),
+ frame_view->settings_button_->x() + frame_view->settings_button_->width(),
frame_view->close_button_->x());
// Validate that the controls should be updated when the activation state is
@@ -217,7 +311,7 @@
EXPECT_NE(title_label_font1.GetStyle(), title_label_font2.GetStyle());
}
-IN_PROC_BROWSER_TEST_F(PanelBrowserViewTest, ShowOrHideInfoButton) {
+IN_PROC_BROWSER_TEST_F(PanelBrowserViewTest, ShowOrHideSettingsButton) {
PanelBrowserView* browser_view = CreatePanelBrowserView("PanelTest");
PanelBrowserFrameView* frame_view = browser_view->GetFrameView();
@@ -231,21 +325,21 @@
// test the cases that the panel is active first.
EXPECT_TRUE(browser_view->panel()->IsActive());
- // When the panel is active, the info button should always be visible.
+ // When the panel is active, the settings button should always be visible.
mouse_watcher->MoveMouse(true);
- EXPECT_TRUE(frame_view->info_button_->IsVisible());
+ EXPECT_TRUE(frame_view->settings_button_->IsVisible());
mouse_watcher->MoveMouse(false);
- EXPECT_TRUE(frame_view->info_button_->IsVisible());
+ EXPECT_TRUE(frame_view->settings_button_->IsVisible());
- // When the panel is inactive, the info button is active per the mouse over
+ // When the panel is inactive, the options button is active per the mouse over
// the panel or not.
browser_view->panel()->Deactivate();
EXPECT_FALSE(browser_view->panel()->IsActive());
mouse_watcher->MoveMouse(true);
- EXPECT_TRUE(frame_view->info_button_->IsVisible());
+ EXPECT_TRUE(frame_view->settings_button_->IsVisible());
mouse_watcher->MoveMouse(false);
- EXPECT_FALSE(frame_view->info_button_->IsVisible());
+ EXPECT_FALSE(frame_view->settings_button_->IsVisible());
}
IN_PROC_BROWSER_TEST_F(PanelBrowserViewTest, TitleBarMouseEvent) {
@@ -423,97 +517,6 @@
}
}
-IN_PROC_BROWSER_TEST_F(PanelBrowserViewTest, AboutPanelBubble) {
- ExtensionService* extension_service =
- browser()->GetProfile()->GetExtensionService();
-
- // Create a testing extension.
-#if defined(OS_WIN)
- FilePath path(FILE_PATH_LITERAL("c:\\foo"));
-#else
- FilePath path(FILE_PATH_LITERAL("/foo"));
-#endif
- DictionaryValue input_value;
- input_value.SetString(extension_manifest_keys::kVersion, "1.0.0.0");
- input_value.SetString(extension_manifest_keys::kName, "Sample Extension");
- input_value.SetString(extension_manifest_keys::kDescription,
- "Sample Description");
- scoped_refptr<Extension> extension(Extension::Create(path, Extension::INVALID,
- input_value, Extension::STRICT_ERROR_CHECKS, NULL));
- ASSERT_TRUE(extension.get());
- extension_service->AddExtension(extension.get());
- // Make sure that async task ExtensionPrefs::OnExtensionInstalled gets a
- // chance to be procesed.
- MessageLoop::current()->RunAllPending();
-
- extension_service->extension_prefs()->OnExtensionInstalled(
- extension, Extension::ENABLED);
-
- // Create a panel with the app name that comes from the extension ID.
- PanelBrowserView* browser_view = CreatePanelBrowserView(
- web_app::GenerateApplicationNameFromExtensionId(extension->id()));
-
- AboutPanelBubble* bubble = AboutPanelBubble::Show(
- browser_view->GetWidget(),
- gfx::Rect(),
- BubbleBorder::BOTTOM_RIGHT,
- SkBitmap(),
- browser_view->browser());
- AboutPanelBubble::AboutPanelBubbleView* contents =
- static_cast<AboutPanelBubble::AboutPanelBubbleView*>(bubble->contents());
-
- // We should have the expected controls.
- EXPECT_EQ(6, contents->child_count());
- EXPECT_TRUE(contents->Contains(contents->icon_));
- EXPECT_TRUE(contents->Contains(contents->title_));
- EXPECT_TRUE(contents->Contains(contents->install_date_));
- EXPECT_TRUE(contents->Contains(contents->description_));
- EXPECT_TRUE(contents->Contains(contents->uninstall_link_));
- EXPECT_TRUE(contents->Contains(contents->report_abuse_link_));
-
- // These controls should be visible.
- EXPECT_TRUE(contents->icon_->IsVisible());
- EXPECT_TRUE(contents->title_->IsVisible());
- EXPECT_TRUE(contents->install_date_->IsVisible());
- EXPECT_TRUE(contents->description_->IsVisible());
- EXPECT_TRUE(contents->uninstall_link_->IsVisible());
- EXPECT_TRUE(contents->report_abuse_link_->IsVisible());
-
- // Validate their layouts.
- EXPECT_GT(contents->title_->x(), contents->icon_->x());
- EXPECT_GT(contents->title_->width(), 0);
- EXPECT_GT(contents->title_->height(), 0);
- EXPECT_EQ(contents->install_date_->x(), contents->title_->x());
- EXPECT_GT(contents->install_date_->y(), contents->title_->y());
- EXPECT_GT(contents->install_date_->width(), 0);
- EXPECT_GT(contents->install_date_->height(), 0);
- EXPECT_EQ(contents->description_->x(), contents->install_date_->x());
- EXPECT_GT(contents->description_->y(), contents->install_date_->y());
- EXPECT_GT(contents->description_->width(), 0);
- EXPECT_GT(contents->description_->height(), 0);
- EXPECT_EQ(contents->uninstall_link_->x(), contents->description_->x());
- EXPECT_GT(contents->uninstall_link_->y(), contents->description_->y());
- EXPECT_GT(contents->uninstall_link_->width(), 0);
- EXPECT_GT(contents->uninstall_link_->height(), 0);
- EXPECT_GT(contents->report_abuse_link_->x(), contents->uninstall_link_->x());
- EXPECT_EQ(contents->report_abuse_link_->y(), contents->uninstall_link_->y());
- EXPECT_GT(contents->report_abuse_link_->width(), 0);
- EXPECT_GT(contents->report_abuse_link_->height(), 0);
-
- // Validates the texts.
- base::Time install_time =
- extension_service->extension_prefs()->GetInstallTime(extension->id());
- string16 time_text = l10n_util::GetStringFUTF16(
- IDS_ABOUT_PANEL_BUBBLE_EXTENSION_INSTALL_DATE,
- base::TimeFormatFriendlyDate(
- extension_service->extension_prefs()->GetInstallTime(
- extension->id())));
- EXPECT_STREQ(UTF16ToUTF8(time_text).c_str(),
- WideToUTF8(contents->install_date_->GetText()).c_str());
- EXPECT_STREQ(extension->description().c_str(),
- UTF16ToUTF8(contents->description_->text()).c_str());
-}
-
IN_PROC_BROWSER_TEST_F(PanelBrowserViewTest, SetBoundsAnimation) {
PanelBrowserView* browser_view = CreatePanelBrowserView("PanelTest");
@@ -550,4 +553,13 @@
browser_view->panel()->Close();
}
+
+IN_PROC_BROWSER_TEST_F(PanelBrowserViewTest, CreateSettingsMenu) {
+ TestCreateSettingsMenuForExtension(
+ FILE_PATH_LITERAL("extension1"), Extension::EXTERNAL_POLICY_DOWNLOAD,
+ "", "");
+ TestCreateSettingsMenuForExtension(
+ FILE_PATH_LITERAL("extension2"), Extension::INVALID,
+ "http://home", "options.html");
+}
#endif

Powered by Google App Engine
This is Rietveld 408576698