| Index: chrome/browser/speech/speech_input_bubble_controller_unittest.cc
|
| diff --git a/chrome/browser/speech/speech_input_bubble_controller_unittest.cc b/chrome/browser/speech/speech_input_bubble_controller_unittest.cc
|
| index 2ed1f1b8231c8bf1da23b0d7cd37b4b142641387..e0ca5ba4dcc110750e70db4d554c4209d6b9e4db 100644
|
| --- a/chrome/browser/speech/speech_input_bubble_controller_unittest.cc
|
| +++ b/chrome/browser/speech/speech_input_bubble_controller_unittest.cc
|
| @@ -5,6 +5,8 @@
|
| #include "base/utf_string_conversions.h"
|
| #include "chrome/browser/browser_thread.h"
|
| #include "chrome/browser/speech/speech_input_bubble_controller.h"
|
| +#include "chrome/test/browser_with_test_window_test.h"
|
| +#include "chrome/test/testing_profile.h"
|
| #include "gfx/rect.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| @@ -22,7 +24,10 @@ class MockSpeechInputBubble : public SpeechInputBubbleBase {
|
| BUBBLE_TEST_CLICK_TRY_AGAIN,
|
| };
|
|
|
| - MockSpeechInputBubble(TabContents*, Delegate* delegate, const gfx::Rect&) {
|
| + MockSpeechInputBubble(TabContents* tab_contents,
|
| + Delegate* delegate,
|
| + const gfx::Rect&)
|
| + : SpeechInputBubbleBase(tab_contents) {
|
| VLOG(1) << "MockSpeechInputBubble created";
|
| MessageLoop::current()->PostTask(
|
| FROM_HERE, NewRunnableFunction(&InvokeDelegate, delegate));
|
| @@ -62,12 +67,11 @@ class MockSpeechInputBubble : public SpeechInputBubbleBase {
|
| // The test fixture.
|
| class SpeechInputBubbleControllerTest
|
| : public SpeechInputBubbleControllerDelegate,
|
| - public testing::Test {
|
| + public BrowserWithTestWindowTest {
|
| public:
|
| SpeechInputBubbleControllerTest()
|
| - : io_loop_(MessageLoop::TYPE_IO),
|
| - ui_thread_(BrowserThread::UI), // constructs a new thread and loop
|
| - io_thread_(BrowserThread::IO, &io_loop_), // resuses main thread loop
|
| + : BrowserWithTestWindowTest(),
|
| + io_thread_(BrowserThread::IO), // constructs a new thread and loop
|
| cancel_clicked_(false),
|
| try_again_clicked_(false),
|
| focus_changed_(false),
|
| @@ -91,26 +95,28 @@ class SpeechInputBubbleControllerTest
|
| } else if (button == SpeechInputBubble::BUTTON_TRY_AGAIN) {
|
| try_again_clicked_ = true;
|
| }
|
| - MessageLoop::current()->Quit();
|
| + message_loop()->PostTask(FROM_HERE, new MessageLoop::QuitTask());
|
| }
|
|
|
| virtual void InfoBubbleFocusChanged(int caller_id) {
|
| VLOG(1) << "Received InfoBubbleFocusChanged";
|
| EXPECT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
| focus_changed_ = true;
|
| - MessageLoop::current()->Quit();
|
| + message_loop()->PostTask(FROM_HERE, new MessageLoop::QuitTask());
|
| }
|
|
|
| // testing::Test methods.
|
| virtual void SetUp() {
|
| + BrowserWithTestWindowTest::SetUp();
|
| SpeechInputBubble::set_factory(
|
| &SpeechInputBubbleControllerTest::CreateBubble);
|
| - ui_thread_.Start();
|
| + io_thread_.Start();
|
| }
|
|
|
| virtual void TearDown() {
|
| SpeechInputBubble::set_factory(NULL);
|
| - ui_thread_.Stop();
|
| + io_thread_.Stop();
|
| + BrowserWithTestWindowTest::TearDown();
|
| }
|
|
|
| static void ActivateBubble() {
|
| @@ -132,14 +138,19 @@ class SpeechInputBubbleControllerTest
|
| // active.
|
| MessageLoop::current()->PostTask(FROM_HERE,
|
| NewRunnableFunction(&ActivateBubble));
|
| +
|
| + // The |tab_contents| parameter would be NULL since the dummy caller id
|
| + // passed to CreateBubble would not have matched any active tab. So get a
|
| + // real TabContents pointer from the test fixture and pass that, because
|
| + // the bubble controller registers for tab close notifications which need
|
| + // a valid TabContents.
|
| + tab_contents = test_fixture_->browser()->GetSelectedTabContents();
|
| return new MockSpeechInputBubble(tab_contents, delegate, element_rect);
|
| }
|
|
|
| protected:
|
| // The main thread of the test is marked as the IO thread and we create a new
|
| // one for the UI thread.
|
| - MessageLoop io_loop_;
|
| - BrowserThread ui_thread_;
|
| BrowserThread io_thread_;
|
| bool cancel_clicked_;
|
| bool try_again_clicked_;
|
|
|