| 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
|
| deleted file mode 100644
|
| index a935dd3d83c53ea0608d036bb0a1cdfae5a7b64c..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/speech/speech_input_bubble_controller_unittest.cc
|
| +++ /dev/null
|
| @@ -1,223 +0,0 @@
|
| -// Copyright (c) 2011 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "base/bind.h"
|
| -#include "base/utf_string_conversions.h"
|
| -#include "chrome/browser/speech/speech_input_bubble_controller.h"
|
| -#include "chrome/browser/ui/browser.h"
|
| -#include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h"
|
| -#include "chrome/test/base/browser_with_test_window_test.h"
|
| -#include "chrome/test/base/testing_profile.h"
|
| -#include "content/test/test_browser_thread.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -#include "ui/gfx/rect.h"
|
| -
|
| -using content::BrowserThread;
|
| -using content::WebContents;
|
| -
|
| -class SkBitmap;
|
| -
|
| -namespace speech_input {
|
| -
|
| -// A mock bubble class which fakes a focus change or recognition cancel by the
|
| -// user and closing of the info bubble.
|
| -class MockSpeechInputBubble : public SpeechInputBubbleBase {
|
| - public:
|
| - enum BubbleType {
|
| - BUBBLE_TEST_FOCUS_CHANGED,
|
| - BUBBLE_TEST_CLICK_CANCEL,
|
| - BUBBLE_TEST_CLICK_TRY_AGAIN,
|
| - };
|
| -
|
| - MockSpeechInputBubble(WebContents* web_contents,
|
| - Delegate* delegate,
|
| - const gfx::Rect&)
|
| - : SpeechInputBubbleBase(web_contents) {
|
| - VLOG(1) << "MockSpeechInputBubble created";
|
| - MessageLoop::current()->PostTask(
|
| - FROM_HERE, base::Bind(&InvokeDelegate, delegate));
|
| - }
|
| -
|
| - static void InvokeDelegate(Delegate* delegate) {
|
| - VLOG(1) << "MockSpeechInputBubble invoking delegate for type " << type_;
|
| - switch (type_) {
|
| - case BUBBLE_TEST_FOCUS_CHANGED:
|
| - delegate->InfoBubbleFocusChanged();
|
| - break;
|
| - case BUBBLE_TEST_CLICK_CANCEL:
|
| - delegate->InfoBubbleButtonClicked(SpeechInputBubble::BUTTON_CANCEL);
|
| - break;
|
| - case BUBBLE_TEST_CLICK_TRY_AGAIN:
|
| - delegate->InfoBubbleButtonClicked(SpeechInputBubble::BUTTON_TRY_AGAIN);
|
| - break;
|
| - }
|
| - }
|
| -
|
| - static void set_type(BubbleType type) {
|
| - type_ = type;
|
| - }
|
| - static BubbleType type() {
|
| - return type_;
|
| - }
|
| -
|
| - virtual void Show() {}
|
| - virtual void Hide() {}
|
| - virtual void UpdateLayout() {}
|
| - virtual void UpdateImage() {}
|
| -
|
| - private:
|
| - static BubbleType type_;
|
| -};
|
| -
|
| -// The test fixture.
|
| -class SpeechInputBubbleControllerTest
|
| - : public SpeechInputBubbleControllerDelegate,
|
| - public BrowserWithTestWindowTest {
|
| - public:
|
| - SpeechInputBubbleControllerTest()
|
| - : BrowserWithTestWindowTest(),
|
| - io_thread_(BrowserThread::IO), // constructs a new thread and loop
|
| - cancel_clicked_(false),
|
| - try_again_clicked_(false),
|
| - focus_changed_(false),
|
| - controller_(ALLOW_THIS_IN_INITIALIZER_LIST(
|
| - new SpeechInputBubbleController(this))) {
|
| - EXPECT_EQ(NULL, test_fixture_);
|
| - test_fixture_ = this;
|
| - }
|
| -
|
| - ~SpeechInputBubbleControllerTest() {
|
| - test_fixture_ = NULL;
|
| - }
|
| -
|
| - // SpeechInputBubbleControllerDelegate methods.
|
| - virtual void InfoBubbleButtonClicked(int caller_id,
|
| - SpeechInputBubble::Button button) {
|
| - VLOG(1) << "Received InfoBubbleButtonClicked for button " << button;
|
| - EXPECT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
| - if (button == SpeechInputBubble::BUTTON_CANCEL) {
|
| - cancel_clicked_ = true;
|
| - } else if (button == SpeechInputBubble::BUTTON_TRY_AGAIN) {
|
| - try_again_clicked_ = true;
|
| - }
|
| - message_loop()->PostTask(FROM_HERE, MessageLoop::QuitClosure());
|
| - }
|
| -
|
| - virtual void InfoBubbleFocusChanged(int caller_id) {
|
| - VLOG(1) << "Received InfoBubbleFocusChanged";
|
| - EXPECT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
| - focus_changed_ = true;
|
| - message_loop()->PostTask(FROM_HERE, MessageLoop::QuitClosure());
|
| - }
|
| -
|
| - // testing::Test methods.
|
| - virtual void SetUp() {
|
| - BrowserWithTestWindowTest::SetUp();
|
| - SpeechInputBubble::set_factory(
|
| - &SpeechInputBubbleControllerTest::CreateBubble);
|
| - io_thread_.Start();
|
| - }
|
| -
|
| - virtual void TearDown() {
|
| - SpeechInputBubble::set_factory(NULL);
|
| - io_thread_.Stop();
|
| - BrowserWithTestWindowTest::TearDown();
|
| - }
|
| -
|
| - static void ActivateBubble() {
|
| - if (MockSpeechInputBubble::type() ==
|
| - MockSpeechInputBubble::BUBBLE_TEST_FOCUS_CHANGED) {
|
| - test_fixture_->controller_->SetBubbleWarmUpMode(kBubbleCallerId);
|
| - } else {
|
| - test_fixture_->controller_->SetBubbleMessage(kBubbleCallerId,
|
| - ASCIIToUTF16("Test"));
|
| - }
|
| - }
|
| -
|
| - static SpeechInputBubble* CreateBubble(WebContents* web_contents,
|
| - SpeechInputBubble::Delegate* delegate,
|
| - const gfx::Rect& element_rect) {
|
| - EXPECT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| - // Set up to activate the bubble soon after it gets created, since we test
|
| - // events sent by the bubble and those are handled only when the bubble is
|
| - // active.
|
| - MessageLoop::current()->PostTask(FROM_HERE,
|
| - base::Bind(&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 WebContents pointer from the test fixture and pass that, because
|
| - // the bubble controller registers for tab close notifications which need
|
| - // a valid WebContents.
|
| - TabContentsWrapper* wrapper =
|
| - test_fixture_->browser()->GetSelectedTabContentsWrapper();
|
| - if (wrapper)
|
| - web_contents = wrapper->web_contents();
|
| - return new MockSpeechInputBubble(web_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.
|
| - content::TestBrowserThread io_thread_;
|
| - bool cancel_clicked_;
|
| - bool try_again_clicked_;
|
| - bool focus_changed_;
|
| - scoped_refptr<SpeechInputBubbleController> controller_;
|
| -
|
| - static const int kBubbleCallerId;
|
| - static SpeechInputBubbleControllerTest* test_fixture_;
|
| -};
|
| -
|
| -SpeechInputBubbleControllerTest*
|
| -SpeechInputBubbleControllerTest::test_fixture_ = NULL;
|
| -
|
| -const int SpeechInputBubbleControllerTest::kBubbleCallerId = 1;
|
| -
|
| -MockSpeechInputBubble::BubbleType MockSpeechInputBubble::type_ =
|
| - MockSpeechInputBubble::BUBBLE_TEST_FOCUS_CHANGED;
|
| -
|
| -// Test that the speech bubble UI gets created in the UI thread and that the
|
| -// focus changed callback comes back in the IO thread.
|
| -TEST_F(SpeechInputBubbleControllerTest, TestFocusChanged) {
|
| - MockSpeechInputBubble::set_type(
|
| - MockSpeechInputBubble::BUBBLE_TEST_FOCUS_CHANGED);
|
| -
|
| - controller_->CreateBubble(kBubbleCallerId, 1, 1, gfx::Rect(1, 1));
|
| - MessageLoop::current()->Run();
|
| - EXPECT_TRUE(focus_changed_);
|
| - EXPECT_FALSE(cancel_clicked_);
|
| - EXPECT_FALSE(try_again_clicked_);
|
| - controller_->CloseBubble(kBubbleCallerId);
|
| -}
|
| -
|
| -// Test that the speech bubble UI gets created in the UI thread and that the
|
| -// recognition cancelled callback comes back in the IO thread.
|
| -TEST_F(SpeechInputBubbleControllerTest, TestRecognitionCancelled) {
|
| - MockSpeechInputBubble::set_type(
|
| - MockSpeechInputBubble::BUBBLE_TEST_CLICK_CANCEL);
|
| -
|
| - controller_->CreateBubble(kBubbleCallerId, 1, 1, gfx::Rect(1, 1));
|
| - MessageLoop::current()->Run();
|
| - EXPECT_TRUE(cancel_clicked_);
|
| - EXPECT_FALSE(try_again_clicked_);
|
| - EXPECT_FALSE(focus_changed_);
|
| - controller_->CloseBubble(kBubbleCallerId);
|
| -}
|
| -
|
| -// Test that the speech bubble UI gets created in the UI thread and that the
|
| -// try-again button click event comes back in the IO thread.
|
| -TEST_F(SpeechInputBubbleControllerTest, TestTryAgainClicked) {
|
| - MockSpeechInputBubble::set_type(
|
| - MockSpeechInputBubble::BUBBLE_TEST_CLICK_TRY_AGAIN);
|
| -
|
| - controller_->CreateBubble(kBubbleCallerId, 1, 1, gfx::Rect(1, 1));
|
| - MessageLoop::current()->Run();
|
| - EXPECT_FALSE(cancel_clicked_);
|
| - EXPECT_TRUE(try_again_clicked_);
|
| - EXPECT_FALSE(focus_changed_);
|
| - controller_->CloseBubble(kBubbleCallerId);
|
| -}
|
| -
|
| -} // namespace speech_input
|
|
|