Home | History | Annotate | Download | only in ui
      1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "chrome/browser/ui/tab_modal_confirm_dialog_browsertest.h"
      6 
      7 #include "base/bind.h"
      8 #include "base/strings/utf_string_conversions.h"
      9 #include "chrome/browser/lifetime/application_lifetime.h"
     10 #include "chrome/browser/ui/browser.h"
     11 #include "chrome/browser/ui/browser_dialogs.h"
     12 #include "chrome/browser/ui/tabs/tab_strip_model.h"
     13 #include "chrome/test/base/ui_test_utils.h"
     14 #include "content/public/browser/page_navigator.h"
     15 #include "content/public/browser/web_contents.h"
     16 #include "testing/gtest/include/gtest/gtest.h"
     17 #include "ui/base/window_open_disposition.h"
     18 
     19 MockTabModalConfirmDialogDelegate::MockTabModalConfirmDialogDelegate(
     20     content::WebContents* web_contents,
     21     Delegate* delegate)
     22     : TabModalConfirmDialogDelegate(web_contents),
     23       delegate_(delegate) {
     24 }
     25 
     26 MockTabModalConfirmDialogDelegate::~MockTabModalConfirmDialogDelegate() {
     27 }
     28 
     29 string16 MockTabModalConfirmDialogDelegate::GetTitle() {
     30   return string16();
     31 }
     32 
     33 string16 MockTabModalConfirmDialogDelegate::GetMessage() {
     34   return string16();
     35 }
     36 
     37 void MockTabModalConfirmDialogDelegate::OnAccepted() {
     38   if (delegate_)
     39     delegate_->OnAccepted();
     40 }
     41 
     42 void MockTabModalConfirmDialogDelegate::OnCanceled() {
     43   if (delegate_)
     44     delegate_->OnCanceled();
     45 }
     46 
     47 void MockTabModalConfirmDialogDelegate::OnClosed() {
     48   if (delegate_)
     49     delegate_->OnClosed();
     50 }
     51 
     52 TabModalConfirmDialogTest::TabModalConfirmDialogTest()
     53     : delegate_(NULL),
     54       dialog_(NULL),
     55       accepted_count_(0),
     56       canceled_count_(0),
     57       closed_count_(0) {
     58 }
     59 
     60 void TabModalConfirmDialogTest::SetUpOnMainThread() {
     61   delegate_ = new MockTabModalConfirmDialogDelegate(
     62       browser()->tab_strip_model()->GetActiveWebContents(), this);
     63   dialog_ = TabModalConfirmDialog::Create(
     64       delegate_, browser()->tab_strip_model()->GetActiveWebContents());
     65   content::RunAllPendingInMessageLoop();
     66 }
     67 
     68 void TabModalConfirmDialogTest::CleanUpOnMainThread() {
     69   content::RunAllPendingInMessageLoop();
     70 }
     71 
     72 void TabModalConfirmDialogTest::OnAccepted() {
     73   ++accepted_count_;
     74 }
     75 
     76 void TabModalConfirmDialogTest::OnCanceled() {
     77   ++canceled_count_;
     78 }
     79 
     80 void TabModalConfirmDialogTest::OnClosed() {
     81   ++closed_count_;
     82 }
     83 
     84 IN_PROC_BROWSER_TEST_F(TabModalConfirmDialogTest, Accept) {
     85   dialog_->AcceptTabModalDialog();
     86   EXPECT_EQ(1, accepted_count_);
     87   EXPECT_EQ(0, canceled_count_);
     88   EXPECT_EQ(0, closed_count_);
     89 }
     90 
     91 IN_PROC_BROWSER_TEST_F(TabModalConfirmDialogTest, Cancel) {
     92   dialog_->CancelTabModalDialog();
     93   EXPECT_EQ(0, accepted_count_);
     94   EXPECT_EQ(1, canceled_count_);
     95   EXPECT_EQ(0, closed_count_);
     96 }
     97 
     98 IN_PROC_BROWSER_TEST_F(TabModalConfirmDialogTest, CancelSelf) {
     99   delegate_->Cancel();
    100   EXPECT_EQ(0, accepted_count_);
    101   EXPECT_EQ(1, canceled_count_);
    102   EXPECT_EQ(0, closed_count_);
    103 }
    104 
    105 IN_PROC_BROWSER_TEST_F(TabModalConfirmDialogTest, Close) {
    106   dialog_->CloseDialog();
    107   EXPECT_EQ(0, accepted_count_);
    108   EXPECT_EQ(0, canceled_count_);
    109   EXPECT_EQ(1, closed_count_);
    110 }
    111 
    112 IN_PROC_BROWSER_TEST_F(TabModalConfirmDialogTest, CloseSelf) {
    113   delegate_->Close();
    114   EXPECT_EQ(0, accepted_count_);
    115   EXPECT_EQ(0, canceled_count_);
    116   EXPECT_EQ(1, closed_count_);
    117 }
    118 
    119 IN_PROC_BROWSER_TEST_F(TabModalConfirmDialogTest, Navigate) {
    120   content::OpenURLParams params(GURL("about:blank"),
    121                                 content::Referrer(),
    122                                 CURRENT_TAB,
    123                                 content::PAGE_TRANSITION_LINK,
    124                                 false);
    125   browser()->tab_strip_model()->GetActiveWebContents()->OpenURL(params);
    126 
    127   EXPECT_EQ(0, accepted_count_);
    128   EXPECT_EQ(0, canceled_count_);
    129   EXPECT_EQ(1, closed_count_);
    130 }
    131 
    132 IN_PROC_BROWSER_TEST_F(TabModalConfirmDialogTest, Quit) {
    133   base::MessageLoopForUI::current()->PostTask(FROM_HERE,
    134                                               base::Bind(&chrome::AttemptExit));
    135   content::RunMessageLoop();
    136   EXPECT_EQ(0, accepted_count_);
    137   EXPECT_EQ(0, canceled_count_);
    138   EXPECT_EQ(1, closed_count_);
    139 }
    140