1// Copyright (c) 2011 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/app_modal_dialogs/app_modal_dialog.h"
6
7#include "chrome/browser/ui/app_modal_dialogs/app_modal_dialog_queue.h"
8#include "chrome/browser/ui/app_modal_dialogs/native_app_modal_dialog.h"
9#include "content/browser/tab_contents/tab_contents.h"
10#include "content/common/notification_service.h"
11#include "content/common/notification_type.h"
12
13AppModalDialog::AppModalDialog(TabContents* tab_contents,
14                               const std::wstring& title)
15    : skip_this_dialog_(false),
16      tab_contents_(tab_contents),
17      native_dialog_(NULL),
18      title_(title) {
19}
20
21AppModalDialog::~AppModalDialog() {
22}
23
24void AppModalDialog::ShowModalDialog() {
25  if (tab_contents_)
26    tab_contents_->Activate();
27
28  CreateAndShowDialog();
29
30  NotificationService::current()->Notify(
31      NotificationType::APP_MODAL_DIALOG_SHOWN,
32      Source<AppModalDialog>(this),
33      NotificationService::NoDetails());
34}
35
36void AppModalDialog::CreateAndShowDialog() {
37  native_dialog_ = CreateNativeDialog();
38  native_dialog_->ShowAppModalDialog();
39}
40
41bool AppModalDialog::IsValid() {
42  return !skip_this_dialog_;
43}
44
45void AppModalDialog::ActivateModalDialog() {
46  DCHECK(native_dialog_);
47  native_dialog_->ActivateAppModalDialog();
48}
49
50void AppModalDialog::CloseModalDialog() {
51  DCHECK(native_dialog_);
52  native_dialog_->CloseAppModalDialog();
53}
54
55void AppModalDialog::CompleteDialog() {
56  AppModalDialogQueue::GetInstance()->ShowNextDialog();
57}
58