1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file. 4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#include "chrome/browser/ui/app_modal_dialogs/app_modal_dialog.h" 6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#include "chrome/browser/ui/app_modal_dialogs/app_modal_dialog_queue.h" 821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#include "chrome/browser/ui/app_modal_dialogs/native_app_modal_dialog.h" 9dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "content/browser/tab_contents/tab_contents.h" 10ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "content/common/notification_service.h" 11ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "content/common/notification_type.h" 12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 13c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochAppModalDialog::AppModalDialog(TabContents* tab_contents, 14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const std::wstring& title) 153345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick : skip_this_dialog_(false), 16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch tab_contents_(tab_contents), 173345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick native_dialog_(NULL), 183345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick title_(title) { 193345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick} 203345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 213345a6884c488ff3a535c2c9acdd33d74b37e311Iain MerrickAppModalDialog::~AppModalDialog() { 22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid AppModalDialog::ShowModalDialog() { 25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch if (tab_contents_) 26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch tab_contents_->Activate(); 27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch CreateAndShowDialog(); 29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch NotificationService::current()->Notify( 31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch NotificationType::APP_MODAL_DIALOG_SHOWN, 32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Source<AppModalDialog>(this), 33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch NotificationService::NoDetails()); 34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 363345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrickvoid AppModalDialog::CreateAndShowDialog() { 373345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick native_dialog_ = CreateNativeDialog(); 383345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick native_dialog_->ShowAppModalDialog(); 393345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick} 403345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 4121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsenbool AppModalDialog::IsValid() { 4221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen return !skip_this_dialog_; 4321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen} 4421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 453345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrickvoid AppModalDialog::ActivateModalDialog() { 463345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick DCHECK(native_dialog_); 473345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick native_dialog_->ActivateAppModalDialog(); 483345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick} 493345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 503345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrickvoid AppModalDialog::CloseModalDialog() { 513345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick DCHECK(native_dialog_); 523345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick native_dialog_->CloseAppModalDialog(); 53c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 54c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 55c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid AppModalDialog::CompleteDialog() { 5621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen AppModalDialogQueue::GetInstance()->ShowNextDialog(); 57c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 58