| // Copyright (c) 2011 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 "components/app_modal/app_modal_dialog.h" |
| |
| #include "base/logging.h" |
| #include "base/run_loop.h" |
| #include "components/app_modal/app_modal_dialog_queue.h" |
| #include "components/app_modal/native_app_modal_dialog.h" |
| |
| using content::WebContents; |
| |
| namespace app_modal { |
| namespace { |
| |
| AppModalDialogObserver* app_modal_dialog_observer = NULL; |
| |
| } // namespace |
| |
| AppModalDialogObserver::AppModalDialogObserver() { |
| DCHECK(!app_modal_dialog_observer); |
| app_modal_dialog_observer = this; |
| } |
| |
| AppModalDialogObserver::~AppModalDialogObserver() { |
| DCHECK(app_modal_dialog_observer); |
| app_modal_dialog_observer = NULL; |
| } |
| |
| AppModalDialog::AppModalDialog(WebContents* web_contents, |
| const base::string16& title) |
| : title_(title), |
| completed_(false), |
| valid_(true), |
| native_dialog_(NULL), |
| web_contents_(web_contents) { |
| } |
| |
| AppModalDialog::~AppModalDialog() { |
| CompleteDialog(); |
| } |
| |
| void AppModalDialog::ShowModalDialog() { |
| native_dialog_ = CreateNativeDialog(); |
| native_dialog_->ShowAppModalDialog(); |
| if (app_modal_dialog_observer) |
| app_modal_dialog_observer->Notify(this); |
| } |
| |
| bool AppModalDialog::IsValid() { |
| return valid_; |
| } |
| |
| void AppModalDialog::Invalidate(bool suppress_callbacks) { |
| valid_ = false; |
| } |
| |
| bool AppModalDialog::IsJavaScriptModalDialog() { |
| return false; |
| } |
| |
| void AppModalDialog::ActivateModalDialog() { |
| DCHECK(native_dialog_); |
| native_dialog_->ActivateAppModalDialog(); |
| } |
| |
| void AppModalDialog::CloseModalDialog() { |
| DCHECK(native_dialog_); |
| native_dialog_->CloseAppModalDialog(); |
| } |
| |
| void AppModalDialog::CompleteDialog() { |
| if (!completed_) { |
| completed_ = true; |
| AppModalDialogQueue::GetInstance()->ShowNextDialog(); |
| } |
| } |
| |
| } // namespace app_modal |