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

Unified Diff: chrome/browser/ui/views/bookmarks/bookmark_bar_view_test.cc

Issue 12087075: Create unit-test for exiting context menus via mouse button (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Created 7 years, 11 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/views/bookmarks/bookmark_bar_view_test.cc
diff --git a/chrome/browser/ui/views/bookmarks/bookmark_bar_view_test.cc b/chrome/browser/ui/views/bookmarks/bookmark_bar_view_test.cc
index 5f3281cbf3a9a6aecdb1e58c0189bf4318aa146f..1feee1fbf5c79205dfe9551eee3a11353e428767 100644
--- a/chrome/browser/ui/views/bookmarks/bookmark_bar_view_test.cc
+++ b/chrome/browser/ui/views/bookmarks/bookmark_bar_view_test.cc
@@ -69,6 +69,22 @@ class TestingPageNavigator : public PageNavigator {
GURL url_;
};
+class TestForMenuExitView : public views::View {
+ public:
+ TestForMenuExitView() : press_count_(0) {
+ }
+ virtual bool OnMousePressed(const ui::MouseEvent& event) OVERRIDE {
+ ++press_count_;
+ return true;
+ }
+ int press_count() const {
+ return press_count_;
+ }
+
+ private:
+ int press_count_;
+};
sky 2013/01/30 14:53:04 DISALLOW_...
sschmitz 2013/01/30 20:43:58 Done.
+
} // namespace
// Base class for event generating bookmark view tests. These test are intended
@@ -106,6 +122,16 @@ class BookmarkBarViewEventTestBase : public ViewEventTestBase {
: ViewEventTestBase(),
model_(NULL),
bb_view_(NULL),
+ test_for_menu_exit_flag_(false),
+ test_for_menu_exit_view_(NULL),
+ file_thread_(BrowserThread::FILE, MessageLoop::current()) {
+ }
+ explicit BookmarkBarViewEventTestBase(bool test_flag)
+ : ViewEventTestBase(),
+ model_(NULL),
+ bb_view_(NULL),
+ test_for_menu_exit_flag_(test_flag),
+ test_for_menu_exit_view_(NULL),
file_thread_(BrowserThread::FILE, MessageLoop::current()) {
}
@@ -143,12 +169,25 @@ class BookmarkBarViewEventTestBase : public ViewEventTestBase {
tmp_parent.AddChildView(bb_view_.get());
- bb_view_pref_ = bb_view_->GetPreferredSize();
- bb_view_pref_.set_width(1000);
- views::TextButton* button = GetBookmarkButton(4);
- while (button->visible()) {
- bb_view_pref_.set_width(bb_view_pref_.width() - 25);
- bb_view_->SetBounds(0, 0, bb_view_pref_.width(), bb_view_pref_.height());
+ if (!test_for_menu_exit_flag_) {
sky 2013/01/30 14:53:04 Why does this need to be here and not in your test
sschmitz 2013/01/30 20:43:58 Done.
+ bb_view_pref_ = bb_view_->GetPreferredSize();
+ bb_view_pref_.set_width(1000);
+ views::TextButton* button = GetBookmarkButton(4);
+ while (button->visible()) {
+ bb_view_pref_.set_width(bb_view_pref_.width() - 25);
+ bb_view_->SetBounds(0, 0, bb_view_pref_.width(),
+ bb_view_pref_.height());
+ bb_view_->Layout();
+ }
+ } else {
+ int width = 700;
+ test_for_menu_exit_view_ = new TestForMenuExitView;
+ test_for_menu_exit_view_->SetBounds(width - 30, 4, 20, 20);
+ bb_view_->AddChildView(test_for_menu_exit_view_);
+ bb_view_pref_ = bb_view_->GetPreferredSize();
+ bb_view_pref_.set_width(width);
+ bb_view_->SetBounds(0, 0, bb_view_pref_.width(),
+ bb_view_pref_.height());
bb_view_->Layout();
}
@@ -192,6 +231,8 @@ class BookmarkBarViewEventTestBase : public ViewEventTestBase {
BookmarkModel* model_;
scoped_ptr<BookmarkBarView> bb_view_;
TestingPageNavigator navigator_;
+ bool test_for_menu_exit_flag_;
+ TestForMenuExitView* test_for_menu_exit_view_;
private:
void AddTestData(bool big_menu) {
@@ -1584,3 +1625,65 @@ class BookmarkBarViewTest19 : public BookmarkBarViewEventTestBase {
};
VIEW_TEST(BookmarkBarViewTest19, BookmarkBarViewTest19_SiblingMenu)
+
+#if defined(USE_ASH) && defined(USE_X11)
sky 2013/01/30 14:53:04 Are you sure this is needed?
sschmitz 2013/01/30 20:43:58 I removed it. git try will tell us the answer;) Do
+
+// Verify that when clicking a mouse button outside a context menu,
+// the context menu is dismissed *and* the underlying view receives
+// the the mouse event (due to event reposting).
+class BookmarkBarViewTest20 : public BookmarkBarViewEventTestBase {
+ public:
+ BookmarkBarViewTest20() : BookmarkBarViewEventTestBase(true) {}
+
+ protected:
+ virtual void DoTestOnMessageLoop() {
+ ASSERT_TRUE(test_for_menu_exit_view_ != NULL);
+ ASSERT_TRUE(test_for_menu_exit_view_->press_count() == 0);
+
+ // Move the mouse to the Test View and press the left mouse button.
+ ui_test_utils::MoveMouseToCenterAndPress(
+ test_for_menu_exit_view_, ui_controls::LEFT,
+ ui_controls::DOWN | ui_controls::UP,
+ CreateEventTask(this, &BookmarkBarViewTest20::Step1));
+ }
+
+ private:
+ void Step1() {
+ ASSERT_TRUE(test_for_menu_exit_view_->press_count() == 1);
+ ASSERT_TRUE(bb_view_->GetMenu() == NULL);
+
+ // Move the mouse to the first folder on the bookmark bar and press the
+ // left mouse button.
+ views::TextButton* button = GetBookmarkButton(0);
+ ui_test_utils::MoveMouseToCenterAndPress(
+ button, ui_controls::LEFT, ui_controls::DOWN | ui_controls::UP,
+ CreateEventTask(this, &BookmarkBarViewTest20::Step2));
+ }
+
+ void Step2() {
+ ASSERT_TRUE(test_for_menu_exit_view_->press_count() == 1);
+ views::MenuItemView* menu = bb_view_->GetMenu();
+ ASSERT_TRUE(menu != NULL);
+ ASSERT_TRUE(menu->GetSubmenu()->IsShowing());
+
+ // Move the mouse to the Test View and press the left mouse button.
+ // The context menu will consume the event and exit. Thereafter,
+ // the event is reposted and delivered to the Test View which
+ // increases its press-count.
+ ui_test_utils::MoveMouseToCenterAndPress(
+ test_for_menu_exit_view_, ui_controls::LEFT,
+ ui_controls::DOWN | ui_controls::UP,
+ CreateEventTask(this, &BookmarkBarViewTest20::Step3));
+ }
+
+ void Step3() {
+ ASSERT_TRUE(test_for_menu_exit_view_->press_count() == 2);
+ ASSERT_TRUE(bb_view_->GetMenu() == NULL);
+ Done();
+ }
+
+};
+
+VIEW_TEST(BookmarkBarViewTest20, ContextMenuExitTest)
+
+#endif
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698