blob: 9e020e191387475e4e482016da74264f70027a9a [file] [log] [blame]
[email protected]f6e5d8c2012-01-04 21:25:361// 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"
fdoraybd6c0982016-06-11 00:23:058#include "base/location.h"
9#include "base/single_thread_task_runner.h"
[email protected]774cc3c2013-06-07 20:26:4510#include "base/strings/utf_string_conversions.h"
fdoraybd6c0982016-06-11 00:23:0511#include "base/threading/thread_task_runner_handle.h"
[email protected]2e6389f2012-05-18 19:41:2512#include "chrome/browser/lifetime/application_lifetime.h"
[email protected]f6e5d8c2012-01-04 21:25:3613#include "chrome/browser/ui/browser.h"
[email protected]52877dbc62012-06-29 22:22:0314#include "chrome/browser/ui/browser_dialogs.h"
[email protected]47ae23372013-01-29 01:50:4815#include "chrome/browser/ui/tabs/tab_strip_model.h"
[email protected]ec35112f2013-08-01 05:46:1816#include "content/public/browser/page_navigator.h"
17#include "content/public/browser/web_contents.h"
thestigaf7f4152014-10-31 23:19:1518#include "content/public/test/test_utils.h"
[email protected]f6e5d8c2012-01-04 21:25:3619#include "testing/gtest/include/gtest/gtest.h"
[email protected]ec35112f2013-08-01 05:46:1820#include "ui/base/window_open_disposition.h"
[email protected]f6e5d8c2012-01-04 21:25:3621
[email protected]3cac87232012-11-20 01:48:2722MockTabModalConfirmDialogDelegate::MockTabModalConfirmDialogDelegate(
[email protected]fa6b2462013-07-30 22:37:0023 content::WebContents* web_contents,
[email protected]3cac87232012-11-20 01:48:2724 Delegate* delegate)
[email protected]fa6b2462013-07-30 22:37:0025 : TabModalConfirmDialogDelegate(web_contents),
26 delegate_(delegate) {
[email protected]3cac87232012-11-20 01:48:2727}
[email protected]f6e5d8c2012-01-04 21:25:3628
[email protected]3cac87232012-11-20 01:48:2729MockTabModalConfirmDialogDelegate::~MockTabModalConfirmDialogDelegate() {
30}
[email protected]f6e5d8c2012-01-04 21:25:3631
[email protected]6a72a632013-12-12 22:22:0032base::string16 MockTabModalConfirmDialogDelegate::GetTitle() {
[email protected]dcd0249872013-12-06 23:58:4533 return base::string16();
[email protected]3cac87232012-11-20 01:48:2734}
[email protected]f6e5d8c2012-01-04 21:25:3635
[email protected]53fcb0562014-02-05 21:27:1036base::string16 MockTabModalConfirmDialogDelegate::GetDialogMessage() {
[email protected]dcd0249872013-12-06 23:58:4537 return base::string16();
[email protected]3cac87232012-11-20 01:48:2738}
39
40void MockTabModalConfirmDialogDelegate::OnAccepted() {
41 if (delegate_)
42 delegate_->OnAccepted();
43}
44
45void MockTabModalConfirmDialogDelegate::OnCanceled() {
46 if (delegate_)
47 delegate_->OnCanceled();
48}
[email protected]f6e5d8c2012-01-04 21:25:3649
[email protected]ec35112f2013-08-01 05:46:1850void MockTabModalConfirmDialogDelegate::OnClosed() {
51 if (delegate_)
52 delegate_->OnClosed();
53}
54
[email protected]f6e5d8c2012-01-04 21:25:3655TabModalConfirmDialogTest::TabModalConfirmDialogTest()
56 : delegate_(NULL),
[email protected]3cac87232012-11-20 01:48:2757 dialog_(NULL),
58 accepted_count_(0),
[email protected]ec35112f2013-08-01 05:46:1859 canceled_count_(0),
60 closed_count_(0) {
[email protected]3cac87232012-11-20 01:48:2761}
[email protected]f6e5d8c2012-01-04 21:25:3662
63void TabModalConfirmDialogTest::SetUpOnMainThread() {
[email protected]fa6b2462013-07-30 22:37:0064 delegate_ = new MockTabModalConfirmDialogDelegate(
65 browser()->tab_strip_model()->GetActiveWebContents(), this);
[email protected]51296c62012-09-26 13:02:4466 dialog_ = TabModalConfirmDialog::Create(
[email protected]47ae23372013-01-29 01:50:4867 delegate_, browser()->tab_strip_model()->GetActiveWebContents());
[email protected]b8deecd2012-07-30 21:09:4468 content::RunAllPendingInMessageLoop();
[email protected]f6e5d8c2012-01-04 21:25:3669}
70
[email protected]ad354972014-07-25 18:58:2071void TabModalConfirmDialogTest::TearDownOnMainThread() {
[email protected]b8deecd2012-07-30 21:09:4472 content::RunAllPendingInMessageLoop();
[email protected]3cac87232012-11-20 01:48:2773}
74
75void TabModalConfirmDialogTest::OnAccepted() {
76 ++accepted_count_;
77}
78
79void TabModalConfirmDialogTest::OnCanceled() {
80 ++canceled_count_;
[email protected]f6e5d8c2012-01-04 21:25:3681}
82
[email protected]ec35112f2013-08-01 05:46:1883void TabModalConfirmDialogTest::OnClosed() {
84 ++closed_count_;
85}
86
[email protected]f6e5d8c2012-01-04 21:25:3687IN_PROC_BROWSER_TEST_F(TabModalConfirmDialogTest, Accept) {
[email protected]51296c62012-09-26 13:02:4488 dialog_->AcceptTabModalDialog();
[email protected]3cac87232012-11-20 01:48:2789 EXPECT_EQ(1, accepted_count_);
90 EXPECT_EQ(0, canceled_count_);
[email protected]ec35112f2013-08-01 05:46:1891 EXPECT_EQ(0, closed_count_);
[email protected]f6e5d8c2012-01-04 21:25:3692}
93
94IN_PROC_BROWSER_TEST_F(TabModalConfirmDialogTest, Cancel) {
[email protected]51296c62012-09-26 13:02:4495 dialog_->CancelTabModalDialog();
[email protected]3cac87232012-11-20 01:48:2796 EXPECT_EQ(0, accepted_count_);
97 EXPECT_EQ(1, canceled_count_);
[email protected]ec35112f2013-08-01 05:46:1898 EXPECT_EQ(0, closed_count_);
[email protected]f6e5d8c2012-01-04 21:25:3699}
100
101IN_PROC_BROWSER_TEST_F(TabModalConfirmDialogTest, CancelSelf) {
[email protected]f6e5d8c2012-01-04 21:25:36102 delegate_->Cancel();
[email protected]3cac87232012-11-20 01:48:27103 EXPECT_EQ(0, accepted_count_);
104 EXPECT_EQ(1, canceled_count_);
[email protected]ec35112f2013-08-01 05:46:18105 EXPECT_EQ(0, closed_count_);
106}
107
108IN_PROC_BROWSER_TEST_F(TabModalConfirmDialogTest, Close) {
109 dialog_->CloseDialog();
110 EXPECT_EQ(0, accepted_count_);
111 EXPECT_EQ(0, canceled_count_);
112 EXPECT_EQ(1, closed_count_);
113}
114
115IN_PROC_BROWSER_TEST_F(TabModalConfirmDialogTest, CloseSelf) {
116 delegate_->Close();
117 EXPECT_EQ(0, accepted_count_);
118 EXPECT_EQ(0, canceled_count_);
119 EXPECT_EQ(1, closed_count_);
120}
121
122IN_PROC_BROWSER_TEST_F(TabModalConfirmDialogTest, Navigate) {
nick3b04f322016-08-31 19:29:19123 content::OpenURLParams params(GURL("about:blank"), content::Referrer(),
124 WindowOpenDisposition::CURRENT_TAB,
125 ui::PAGE_TRANSITION_LINK, false);
[email protected]ec35112f2013-08-01 05:46:18126 browser()->tab_strip_model()->GetActiveWebContents()->OpenURL(params);
127
128 EXPECT_EQ(0, accepted_count_);
129 EXPECT_EQ(0, canceled_count_);
130 EXPECT_EQ(1, closed_count_);
[email protected]f6e5d8c2012-01-04 21:25:36131}
132
133IN_PROC_BROWSER_TEST_F(TabModalConfirmDialogTest, Quit) {
fdoraybd6c0982016-06-11 00:23:05134 base::ThreadTaskRunnerHandle::Get()->PostTask(
tzik22036cc2017-04-21 04:08:18135 FROM_HERE, base::BindOnce(&chrome::AttemptExit));
[email protected]729eb632012-07-26 04:45:26136 content::RunMessageLoop();
[email protected]3cac87232012-11-20 01:48:27137 EXPECT_EQ(0, accepted_count_);
[email protected]ec35112f2013-08-01 05:46:18138 EXPECT_EQ(0, canceled_count_);
139 EXPECT_EQ(1, closed_count_);
[email protected]f6e5d8c2012-01-04 21:25:36140}