// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "chrome/browser/ui/gtk/confirm_bubble_gtk.h" #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser_window.h" #include "chrome/browser/ui/test/test_confirm_bubble_model.h" #include "chrome/test/base/in_process_browser_test.h" class ConfirmBubbleGtkTest : public InProcessBrowserTest { public: ConfirmBubbleGtkTest() : bubble_(NULL), model_deleted_(false), accept_clicked_(false), cancel_clicked_(false), link_clicked_(false) { } void ShowBubble() { model_deleted_ = false; accept_clicked_ = false; cancel_clicked_ = false; link_clicked_ = false; gfx::Point point(0, 0); bubble_ = new ConfirmBubbleGtk( GTK_WIDGET(browser()->window()->GetNativeWindow()), point, new TestConfirmBubbleModel(&model_deleted_, &accept_clicked_, &cancel_clicked_, &link_clicked_)); bubble_->Show(); } ConfirmBubbleGtk* bubble() const { return bubble_; } bool model_deleted() const { return model_deleted_; } bool accept_clicked() const { return accept_clicked_; } bool cancel_clicked() const { return cancel_clicked_; } bool link_clicked() const { return link_clicked_; } private: ConfirmBubbleGtk* bubble_; bool model_deleted_; bool accept_clicked_; bool cancel_clicked_; bool link_clicked_; }; // Verifies clicking a button or a link calls an appropriate model method and // deletes the model. IN_PROC_BROWSER_TEST_F(ConfirmBubbleGtkTest, ClickCancel) { ShowBubble(); bubble()->OnCancelButton(NULL); EXPECT_TRUE(model_deleted()); EXPECT_FALSE(accept_clicked()); EXPECT_TRUE(cancel_clicked()); EXPECT_FALSE(link_clicked()); } IN_PROC_BROWSER_TEST_F(ConfirmBubbleGtkTest, ClickLink) { ShowBubble(); bubble()->OnLinkButton(NULL); EXPECT_TRUE(model_deleted()); EXPECT_FALSE(accept_clicked()); EXPECT_FALSE(cancel_clicked()); EXPECT_TRUE(link_clicked()); } IN_PROC_BROWSER_TEST_F(ConfirmBubbleGtkTest, ClickOk) { ShowBubble(); bubble()->OnOkButton(NULL); EXPECT_TRUE(model_deleted()); EXPECT_TRUE(accept_clicked()); EXPECT_FALSE(cancel_clicked()); EXPECT_FALSE(link_clicked()); }