| Index: chrome/browser/cocoa/translate/translate_infobar_unittest.mm
|
| diff --git a/chrome/browser/cocoa/translate_infobar_unittest.mm b/chrome/browser/cocoa/translate/translate_infobar_unittest.mm
|
| similarity index 55%
|
| rename from chrome/browser/cocoa/translate_infobar_unittest.mm
|
| rename to chrome/browser/cocoa/translate/translate_infobar_unittest.mm
|
| index 07e4185d29a614026de0ad1b737c2436c04a5630..38eb1ace160576b2f9c57a536d1ae0a6b3aa427e 100644
|
| --- a/chrome/browser/cocoa/translate_infobar_unittest.mm
|
| +++ b/chrome/browser/cocoa/translate/translate_infobar_unittest.mm
|
| @@ -3,30 +3,44 @@
|
| // found in the LICENSE file.
|
|
|
| #import <Cocoa/Cocoa.h>
|
| -#import "chrome/browser/cocoa/translate_infobar.h"
|
|
|
| -#include "base/scoped_nsobject.h"
|
| -#include "base/string_util.h"
|
| -#include "chrome/app/chrome_dll_resource.h" // For translate menu command ids.
|
| +#import "base/scoped_nsobject.h"
|
| +#import "base/string_util.h"
|
| +#import "chrome/app/chrome_dll_resource.h" // For translate menu command ids.
|
| +#import "chrome/browser/cocoa/browser_test_helper.h"
|
| #import "chrome/browser/cocoa/cocoa_test_helper.h"
|
| -#include "chrome/browser/translate/translate_infobars_delegates.h"
|
| -#include "testing/gmock/include/gmock/gmock.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -#include "testing/platform_test.h"
|
| +#import "chrome/browser/cocoa/infobar.h"
|
| +#import "chrome/browser/cocoa/translate/translate_infobar_base.h"
|
| +#import "chrome/browser/cocoa/translate/before_translate_infobar_controller.h"
|
| +#import "chrome/browser/cocoa/translate/after_translate_infobar_controller.h"
|
| +#import "chrome/browser/cocoa/translate/translate_message_infobar_controller.h"
|
| +#import "chrome/browser/renderer_host/site_instance.h"
|
| +#import "chrome/browser/tab_contents/tab_contents.h"
|
| +#import "chrome/browser/translate/translate_infobar_delegate2.h"
|
| +#import "ipc/ipc_channel.h"
|
| +#import "testing/gmock/include/gmock/gmock.h"
|
| +#import "testing/gtest/include/gtest/gtest.h"
|
| +#import "testing/platform_test.h"
|
|
|
| namespace {
|
|
|
| // All states the translate toolbar can assume.
|
| -TranslateInfoBarDelegate::TranslateState kTranslateToolbarStates[] = {
|
| - TranslateInfoBarDelegate::kBeforeTranslate,
|
| - TranslateInfoBarDelegate::kAfterTranslate,
|
| - TranslateInfoBarDelegate::kTranslateError};
|
| +TranslateInfoBarDelegate2::Type kTranslateToolbarStates[] = {
|
| + TranslateInfoBarDelegate2::BEFORE_TRANSLATE,
|
| + TranslateInfoBarDelegate2::AFTER_TRANSLATE,
|
| + TranslateInfoBarDelegate2::TRANSLATING,
|
| + TranslateInfoBarDelegate2::TRANSLATION_ERROR
|
| +};
|
|
|
| -class MockTranslateInfoBarDelegate : public TranslateInfoBarDelegate {
|
| +class MockTranslateInfoBarDelegate : public TranslateInfoBarDelegate2 {
|
| public:
|
| - MockTranslateInfoBarDelegate() {
|
| + MockTranslateInfoBarDelegate(TranslateInfoBarDelegate2::Type type,
|
| + TranslateErrors::Type error,
|
| + TabContents* contents)
|
| + : TranslateInfoBarDelegate2(type, error, contents, "en", "es"){
|
| // Start out in the "Before Translate" state.
|
| - UpdateState(kBeforeTranslate, TranslateErrors::NONE);
|
| + type_ = type;
|
| +
|
| }
|
|
|
| virtual string16 GetDisplayNameForLocale(const std::string& language_code) {
|
| @@ -51,45 +65,57 @@ class MockTranslateInfoBarDelegate : public TranslateInfoBarDelegate {
|
| MOCK_METHOD0(ToggleLanguageBlacklist, void());
|
| MOCK_METHOD0(ToggleSiteBlacklist, void());
|
| MOCK_METHOD0(ToggleAlwaysTranslate, void());
|
| -
|
| };
|
|
|
| -class TranslationBarInfoTest : public CocoaTest {
|
| +class TranslationInfoBarTest : public CocoaTest {
|
| public:
|
| scoped_ptr<MockTranslateInfoBarDelegate> infobar_delegate;
|
| - scoped_nsobject<TranslateInfoBarController> infobar_controller;
|
| + scoped_nsobject<TranslateInfoBarControllerBase> infobar_controller;
|
| + BrowserTestHelper browser_helper_;
|
|
|
| public:
|
| // Each test gets a single Mock translate delegate for the lifetime of
|
| // the test.
|
| virtual void SetUp() {
|
| CocoaTest::SetUp();
|
| - infobar_delegate.reset(new MockTranslateInfoBarDelegate);
|
| + CreateInfoBar();
|
| }
|
|
|
| void CreateInfoBar() {
|
| - CreateInfoBar(TranslateInfoBarDelegate::kBeforeTranslate);
|
| + CreateInfoBar(TranslateInfoBarDelegate2::BEFORE_TRANSLATE);
|
| }
|
|
|
| - void CreateInfoBar(TranslateInfoBarDelegate::TranslateState initial_state) {
|
| - infobar_delegate->UpdateState(initial_state, TranslateErrors::NONE);
|
| + void CreateInfoBar(TranslateInfoBarDelegate2::Type type) {
|
| + SiteInstance* instance =
|
| + SiteInstance::CreateSiteInstance(browser_helper_.profile());
|
| + scoped_ptr<TabContents> tab_contents(
|
| + new TabContents(browser_helper_.profile(),
|
| + instance,
|
| + MSG_ROUTING_NONE,
|
| + NULL));
|
| + TranslateErrors::Type error = TranslateErrors::NONE;
|
| + if (type == TranslateInfoBarDelegate2::TRANSLATION_ERROR)
|
| + error = TranslateErrors::NETWORK;
|
| + infobar_delegate.reset(
|
| + new MockTranslateInfoBarDelegate(type, error, tab_contents.get()));
|
| [[infobar_controller view] removeFromSuperview];
|
| + scoped_ptr<InfoBar> infobar(infobar_delegate->CreateInfoBar());
|
| infobar_controller.reset(
|
| - [[TranslateInfoBarController alloc]
|
| - initWithDelegate:infobar_delegate.get()]);
|
| + reinterpret_cast<TranslateInfoBarControllerBase*>(
|
| + infobar->controller()));
|
| // Need to call this to get the view to load from nib.
|
| [[test_window() contentView] addSubview:[infobar_controller view]];
|
| }
|
| };
|
|
|
| // Check that we can instantiate a Translate Infobar correctly.
|
| -TEST_F(TranslationBarInfoTest, Instantiate) {
|
| +TEST_F(TranslationInfoBarTest, Instantiate) {
|
| CreateInfoBar();
|
| ASSERT_TRUE(infobar_controller.get());
|
| }
|
|
|
| // Check that clicking the Translate button calls Translate().
|
| -TEST_F(TranslationBarInfoTest, TranslateCalledOnButtonPress) {
|
| +TEST_F(TranslationInfoBarTest, TranslateCalledOnButtonPress) {
|
| CreateInfoBar();
|
|
|
| EXPECT_CALL(*infobar_delegate, Translate()).Times(1);
|
| @@ -98,68 +124,26 @@ TEST_F(TranslationBarInfoTest, TranslateCalledOnButtonPress) {
|
|
|
| // Check that clicking the "Retry" button calls Translate() when we're
|
| // in the error mode - http://crbug.com/41315 .
|
| -TEST_F(TranslationBarInfoTest, TranslateCalledInErrorMode) {
|
| - CreateInfoBar();
|
| +TEST_F(TranslationInfoBarTest, TranslateCalledInErrorMode) {
|
| + CreateInfoBar(TranslateInfoBarDelegate2::TRANSLATION_ERROR);
|
|
|
| EXPECT_CALL(*infobar_delegate, Translate()).Times(1);
|
|
|
| - infobar_delegate->UpdateState(TranslateInfoBarDelegate::kTranslateError,
|
| - TranslateErrors::NONE);
|
| [infobar_controller ok:nil];
|
| }
|
|
|
| // Check that clicking the "Show Original button calls RevertTranslation().
|
| -TEST_F(TranslationBarInfoTest, RevertCalledOnButtonPress) {
|
| +TEST_F(TranslationInfoBarTest, RevertCalledOnButtonPress) {
|
| CreateInfoBar();
|
|
|
| EXPECT_CALL(*infobar_delegate, RevertTranslation()).Times(1);
|
| [infobar_controller showOriginal:nil];
|
| }
|
|
|
| -// Check that UI is layed out correctly as we transition synchronously through
|
| -// toolbar states.
|
| -TEST_F(TranslationBarInfoTest, StateTransitions) {
|
| - EXPECT_CALL(*infobar_delegate, Translate())
|
| - .Times(0);
|
| - CreateInfoBar();
|
| -
|
| - for (size_t i = 0; i < arraysize(kTranslateToolbarStates); ++i) {
|
| - TranslateInfoBarDelegate::TranslateState state = kTranslateToolbarStates[i];
|
| - TranslateErrors::Type error = TranslateErrors::NONE;
|
| -
|
| - infobar_delegate->UpdateState(state, error);
|
| -
|
| - // Pending Translation == false.
|
| - if (i != 0) {
|
| - // First time around, the toolbar should already be layed out.
|
| - [infobar_controller updateState:state
|
| - translationPending:false
|
| - error:error];
|
| - }
|
| -
|
| - bool result =
|
| - [infobar_controller verifyLayout:state
|
| - translationPending:false];
|
| - EXPECT_TRUE(result) << "Layout wrong, for state " << state <<
|
| - "translatePending=false";
|
| -
|
| - // Pending Translation == true.
|
| - [infobar_controller updateState:state
|
| - translationPending:true
|
| - error:error];
|
| -
|
| - result = [infobar_controller verifyLayout:state translationPending:true];
|
| - EXPECT_TRUE(result) << "Layout wrong, for state " << state <<
|
| - "translatePending=true";
|
| -
|
| - }
|
| -}
|
| -
|
| // Check that items in the options menu are hooked up correctly.
|
| -TEST_F(TranslationBarInfoTest, OptionsMenuItemsHookedUp) {
|
| +TEST_F(TranslationInfoBarTest, OptionsMenuItemsHookedUp) {
|
| EXPECT_CALL(*infobar_delegate, Translate())
|
| .Times(0);
|
| - CreateInfoBar();
|
|
|
| [infobar_controller rebuildOptionsMenu];
|
| NSMenu* optionsMenu = [infobar_controller optionsMenu];
|
| @@ -181,19 +165,19 @@ TEST_F(TranslationBarInfoTest, OptionsMenuItemsHookedUp) {
|
| {
|
| EXPECT_CALL(*infobar_delegate, ToggleAlwaysTranslate())
|
| .Times(1);
|
| - [infobar_controller menuItemSelected:alwaysTranslateLanguateItem];
|
| + [infobar_controller optionsMenuChanged:alwaysTranslateLanguateItem];
|
| }
|
|
|
| {
|
| EXPECT_CALL(*infobar_delegate, ToggleLanguageBlacklist())
|
| .Times(1);
|
| - [infobar_controller menuItemSelected:neverTranslateLanguateItem];
|
| + [infobar_controller optionsMenuChanged:neverTranslateLanguateItem];
|
| }
|
|
|
| {
|
| EXPECT_CALL(*infobar_delegate, ToggleSiteBlacklist())
|
| .Times(1);
|
| - [infobar_controller menuItemSelected:neverTranslateSiteItem];
|
| + [infobar_controller optionsMenuChanged:neverTranslateSiteItem];
|
| }
|
|
|
| {
|
| @@ -205,32 +189,28 @@ TEST_F(TranslationBarInfoTest, OptionsMenuItemsHookedUp) {
|
| // Check that selecting a new item from the "Source Language" popup in "before
|
| // translate" mode doesn't trigger a translation or change state.
|
| // http://crbug.com/36666
|
| -TEST_F(TranslationBarInfoTest, Bug36666) {
|
| +TEST_F(TranslationInfoBarTest, Bug36666) {
|
| EXPECT_CALL(*infobar_delegate, Translate())
|
| .Times(0);
|
|
|
| CreateInfoBar();
|
| int arbitrary_index = 2;
|
| [infobar_controller sourceLanguageModified:arbitrary_index];
|
| - EXPECT_EQ(infobar_delegate->state(),
|
| - TranslateInfoBarDelegate::kBeforeTranslate);
|
| - EXPECT_EQ([infobar_controller state],
|
| - TranslateInfoBarDelegate::kBeforeTranslate);
|
| + EXPECT_CALL(*infobar_delegate, Translate())
|
| + .Times(0);
|
| }
|
|
|
| // Check that the infobar lays itself out correctly when instantiated in
|
| // each of the states.
|
| // http://crbug.com/36895
|
| -TEST_F(TranslationBarInfoTest, Bug36895) {
|
| +TEST_F(TranslationInfoBarTest, Bug36895) {
|
| EXPECT_CALL(*infobar_delegate, Translate())
|
| .Times(0);
|
|
|
| for (size_t i = 0; i < arraysize(kTranslateToolbarStates); ++i) {
|
| CreateInfoBar(kTranslateToolbarStates[i]);
|
| EXPECT_TRUE(
|
| - [infobar_controller verifyLayout:kTranslateToolbarStates[i]
|
| - translationPending:false]) <<
|
| - "Layout wrong, for state #" << i;
|
| + [infobar_controller verifyLayout]) << "Layout wrong, for state #" << i;
|
| }
|
| }
|
|
|
|
|