// 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 "chrome/browser/ui/app_modal_dialogs/app_modal_dialog.h" #include "base/logging.h" #include "chrome/browser/chrome_notification_types.h" #include "chrome/browser/ui/app_modal_dialogs/app_modal_dialog_queue.h" #include "chrome/browser/ui/app_modal_dialogs/native_app_modal_dialog.h" #include "content/public/browser/notification_service.h" #include "content/public/browser/web_contents.h" #include "content/public/browser/web_contents_delegate.h" using content::WebContents; 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() { web_contents_->GetDelegate()->ActivateContents(web_contents_); CreateAndShowDialog(); content::NotificationService::current()->Notify( chrome::NOTIFICATION_APP_MODAL_DIALOG_SHOWN, content::Source(this), content::NotificationService::NoDetails()); } void AppModalDialog::CreateAndShowDialog() { native_dialog_ = CreateNativeDialog(); native_dialog_->ShowAppModalDialog(); } bool AppModalDialog::IsValid() { return valid_; } void AppModalDialog::Invalidate() { 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(); } }