| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/ui/test/test_browser_dialog.h" | 5 #include "chrome/browser/ui/test/test_browser_dialog.h" |
| 6 | 6 |
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "base/message_loop/message_loop.h" | 8 #include "base/message_loop/message_loop.h" |
| 9 #include "base/stl_util.h" | 9 #include "base/stl_util.h" |
| 10 #include "base/test/gtest_util.h" | 10 #include "base/test/gtest_util.h" |
| (...skipping 24 matching lines...) Expand all Loading... |
| 35 // Helper to break out of the nested run loop that runs a test dialog. | 35 // Helper to break out of the nested run loop that runs a test dialog. |
| 36 class WidgetCloser : public views::WidgetObserver { | 36 class WidgetCloser : public views::WidgetObserver { |
| 37 public: | 37 public: |
| 38 WidgetCloser(views::Widget* widget, DialogAction action) | 38 WidgetCloser(views::Widget* widget, DialogAction action) |
| 39 : widget_(widget), weak_ptr_factory_(this) { | 39 : widget_(widget), weak_ptr_factory_(this) { |
| 40 widget->AddObserver(this); | 40 widget->AddObserver(this); |
| 41 if (action == DialogAction::INTERACTIVE) | 41 if (action == DialogAction::INTERACTIVE) |
| 42 return; | 42 return; |
| 43 | 43 |
| 44 base::ThreadTaskRunnerHandle::Get()->PostTask( | 44 base::ThreadTaskRunnerHandle::Get()->PostTask( |
| 45 FROM_HERE, | 45 FROM_HERE, base::BindOnce(&WidgetCloser::CloseNow, |
| 46 base::Bind(&WidgetCloser::CloseNow, weak_ptr_factory_.GetWeakPtr())); | 46 weak_ptr_factory_.GetWeakPtr())); |
| 47 } | 47 } |
| 48 | 48 |
| 49 // WidgetObserver: | 49 // WidgetObserver: |
| 50 void OnWidgetDestroyed(views::Widget* widget) override { | 50 void OnWidgetDestroyed(views::Widget* widget) override { |
| 51 widget_->RemoveObserver(this); | 51 widget_->RemoveObserver(this); |
| 52 widget_ = nullptr; | 52 widget_ = nullptr; |
| 53 base::MessageLoop::current()->QuitNow(); | 53 base::MessageLoop::current()->QuitNow(); |
| 54 } | 54 } |
| 55 | 55 |
| 56 private: | 56 private: |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 125 ASSERT_EQ(1u, added.size()); | 125 ASSERT_EQ(1u, added.size()); |
| 126 | 126 |
| 127 const DialogAction action = base::CommandLine::ForCurrentProcess()->HasSwitch( | 127 const DialogAction action = base::CommandLine::ForCurrentProcess()->HasSwitch( |
| 128 internal::kInteractiveSwitch) | 128 internal::kInteractiveSwitch) |
| 129 ? DialogAction::INTERACTIVE | 129 ? DialogAction::INTERACTIVE |
| 130 : DialogAction::CLOSE_NOW; | 130 : DialogAction::CLOSE_NOW; |
| 131 | 131 |
| 132 WidgetCloser closer(added[0], action); | 132 WidgetCloser closer(added[0], action); |
| 133 ::test::RunTestInteractively(); | 133 ::test::RunTestInteractively(); |
| 134 } | 134 } |
| OLD | NEW |