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/chromeos/login/wizard_in_process_browser_test.h"
6
7#include "base/message_loop.h"
8#include "chrome/browser/chromeos/login/base_login_display_host.h"
9#include "chrome/browser/chromeos/login/wizard_controller.h"
10#include "chrome/browser/ui/browser.h"
11#include "chrome/browser/ui/views/browser_dialogs.h"
12#include "chrome/test/ui_test_utils.h"
13
14namespace chromeos {
15
16WizardInProcessBrowserTest::WizardInProcessBrowserTest(const char* screen_name)
17    : screen_name_(screen_name),
18      controller_(NULL),
19      host_(NULL) {
20}
21
22Browser* WizardInProcessBrowserTest::CreateBrowser(Profile* profile) {
23  SetUpWizard();
24
25  WizardController::SetZeroDelays();
26
27  if (!screen_name_.empty()) {
28    browser::ShowLoginWizard(screen_name_.c_str(), gfx::Size(1024, 600));
29    controller_ = WizardController::default_controller();
30    host_ = BaseLoginDisplayHost::default_host();
31  }
32  return NULL;
33}
34
35void WizardInProcessBrowserTest::CleanUpOnMainThread() {
36  // LoginDisplayHost owns controllers and all windows.
37  delete host_;
38
39  // Observers and what not are notified after the views are deleted, which
40  // happens after a delay (because they are contained in a WidgetGtk which
41  // delays deleting itself). Run the message loop until we know the wizard
42  // has been deleted.
43  ui_test_utils::WaitForNotification(
44      NotificationType::WIZARD_CONTENT_VIEW_DESTROYED);
45}
46
47}  // namespace chromeos
48