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