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

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: crbug.com/171891 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..6a5380f161af85acc611d25e54467a9f8898f6b4 100644
--- a/chrome/browser/ui/views/bookmarks/bookmark_bar_view_test.cc
+++ b/chrome/browser/ui/views/bookmarks/bookmark_bar_view_test.cc
@@ -2,6 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include "ash/shell.h"
#include "base/bind.h"
#include "base/callback.h"
#include "base/compiler_specific.h"
@@ -1584,3 +1585,99 @@ class BookmarkBarViewTest19 : public BookmarkBarViewEventTestBase {
};
VIEW_TEST(BookmarkBarViewTest19, BookmarkBarViewTest19_SiblingMenu)
+
+// 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() : test_view_(NULL) {}
+
+ protected:
+ virtual void DoTestOnMessageLoop() {
+ // Enlarge window
+ const int screen_width =
+ ash::Shell::GetScreen()->GetPrimaryDisplay().bounds().width();
+ gfx::Rect bounds(window_->GetWindowBoundsInScreen());
+ const int window_width = screen_width - bounds.x() - 20;
+ bounds.set_width(window_width);
+ window_->SetBoundsConstrained(bounds);
+ window_->Activate();
+
+ // Place Test View into bb_view_ at right most edge.
+ int xx = 0;
sky 2013/01/30 23:01:57 Why are you adding directly to the bookmark bar vi
sschmitz 2013/01/31 01:31:45 Done.
+ for (int ii = 0; ii < bb_view_->child_count(); ++ii) {
+ const int right = bb_view_->child_at(ii)->bounds().right();
+ if (right > xx) xx = right;
sky 2013/01/30 23:01:57 no single ifs.
sschmitz 2013/01/31 01:31:45 Done.
+ }
+ gfx::Rect bb_view_bounds(bb_view_->bounds());
+ const int width = bb_view_bounds.width() - xx;
+ const int height = bb_view_bounds.height();
+ ASSERT_TRUE(width > 1 );
+ ASSERT_TRUE(height > 1 );
+ test_view_ = new TestViewForMenuExit;
+ test_view_->SetBounds(xx, 0, width, height);
+ bb_view_->AddChildView(test_view_);
+
+ ASSERT_EQ(test_view_->press_count(), 0);
+
+ // Move the mouse to the Test View and press the left mouse button.
+ ui_test_utils::MoveMouseToCenterAndPress(
+ test_view_, ui_controls::LEFT, ui_controls::DOWN | ui_controls::UP,
+ CreateEventTask(this, &BookmarkBarViewTest20::Step1));
+ }
+
+ private:
+ void Step1() {
+ ASSERT_EQ(test_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_EQ(test_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_view_, ui_controls::LEFT, ui_controls::DOWN | ui_controls::UP,
+ CreateEventTask(this, &BookmarkBarViewTest20::Step3));
+ }
+
+ void Step3() {
+ ASSERT_EQ(test_view_->press_count(), 2);
+ ASSERT_TRUE(bb_view_->GetMenu() == NULL);
+ Done();
+ }
+
+ class TestViewForMenuExit : public views::View {
+ public:
+ TestViewForMenuExit() : 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_;
+
+ DISALLOW_COPY_AND_ASSIGN(TestViewForMenuExit);
+ };
+
+ TestViewForMenuExit* test_view_;
+};
+
+VIEW_TEST(BookmarkBarViewTest20, ContextMenuExitTest)
« 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