Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2839)

Unified Diff: chrome/browser/ui/cocoa/infobars/translate_infobar_unittest.mm

Issue 22694006: Infobar system refactor. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/cocoa/infobars/translate_infobar_unittest.mm
===================================================================
--- chrome/browser/ui/cocoa/infobars/translate_infobar_unittest.mm (revision 238220)
+++ chrome/browser/ui/cocoa/infobars/translate_infobar_unittest.mm (working copy)
@@ -36,13 +36,11 @@
class MockTranslateInfoBarDelegate : public TranslateInfoBarDelegate {
public:
- MockTranslateInfoBarDelegate(InfoBarService* infobar_service,
- TranslateInfoBarDelegate::Type type,
+ MockTranslateInfoBarDelegate(TranslateInfoBarDelegate::Type type,
TranslateErrors::Type error,
PrefService* prefs,
ShortcutConfiguration config)
- : TranslateInfoBarDelegate(infobar_service, type, NULL, "en", "es", error,
- prefs, config) {
+ : TranslateInfoBarDelegate(type, NULL, "en", "es", error, prefs, config) {
}
MOCK_METHOD0(Translate, void());
@@ -58,8 +56,13 @@
MOCK_METHOD0(ToggleAlwaysTranslate, void());
};
+} // namespace
+
class TranslationInfoBarTest : public CocoaProfileTest {
public:
+ TranslationInfoBarTest() : CocoaProfileTest(), infobar_(NULL) {
+ }
+
// Each test gets a single Mock translate delegate for the lifetime of
// the test.
virtual void SetUp() OVERRIDE {
@@ -68,11 +71,14 @@
web_contents_.reset(
WebContents::Create(WebContents::CreateParams(profile())));
InfoBarService::CreateForWebContents(web_contents_.get());
- CreateInfoBar();
}
- void CreateInfoBar() {
- CreateInfoBar(TranslateInfoBarDelegate::BEFORE_TRANSLATE);
+ virtual void TearDown() OVERRIDE {
+ if (infobar_) {
+ infobar_->CloseSoon();
+ infobar_ = NULL;
+ }
+ CocoaProfileTest::TearDown();
}
void CreateInfoBar(TranslateInfoBarDelegate::Type type) {
@@ -79,21 +85,23 @@
TranslateErrors::Type error = TranslateErrors::NONE;
if (type == TranslateInfoBarDelegate::TRANSLATION_ERROR)
error = TranslateErrors::NETWORK;
- InfoBarService* infobar_service =
- InfoBarService::FromWebContents(web_contents_.get());
Profile* profile =
Profile::FromBrowserContext(web_contents_->GetBrowserContext());
ShortcutConfiguration config;
config.never_translate_min_count = 3;
config.always_translate_min_count = 3;
- infobar_delegate_.reset(new MockTranslateInfoBarDelegate(
- infobar_service, type, error, profile->GetPrefs(), config));
[[infobar_controller_ view] removeFromSuperview];
- InfoBarDelegate* base =
- static_cast<InfoBarDelegate*>(infobar_delegate_.get());
- infobar_.reset(
- static_cast<InfoBarCocoa*>(base->CreateInfoBar(infobar_service)));
+ scoped_ptr<TranslateInfoBarDelegate> delegate(
+ new MockTranslateInfoBarDelegate(type, error, profile->GetPrefs(),
+ config));
+ scoped_ptr<InfoBar> infobar(
+ TranslateInfoBarDelegate::CreateInfoBar(delegate.Pass()));
+ if (infobar_)
+ infobar_->CloseSoon();
+ infobar_ = static_cast<InfoBarCocoa*>(infobar.release());
+ infobar_->SetOwner(InfoBarService::FromWebContents(web_contents_.get()));
+
infobar_controller_.reset([static_cast<TranslateInfoBarControllerBase*>(
infobar_->controller()) retain]);
@@ -104,23 +112,26 @@
[[test_window() contentView] addSubview:[infobar_controller_ view]];
}
+ MockTranslateInfoBarDelegate* infobar_delegate() const {
+ return static_cast<MockTranslateInfoBarDelegate*>(infobar_->delegate());
+ }
+
scoped_ptr<WebContents> web_contents_;
- scoped_ptr<MockTranslateInfoBarDelegate> infobar_delegate_;
- scoped_ptr<InfoBarCocoa> infobar_;
+ InfoBarCocoa* infobar_; // weak, deletes itself
base::scoped_nsobject<TranslateInfoBarControllerBase> infobar_controller_;
};
// Check that we can instantiate a Translate Infobar correctly.
TEST_F(TranslationInfoBarTest, Instantiate) {
- CreateInfoBar();
+ CreateInfoBar(TranslateInfoBarDelegate::BEFORE_TRANSLATE);
ASSERT_TRUE(infobar_controller_.get());
}
// Check that clicking the Translate button calls Translate().
TEST_F(TranslationInfoBarTest, TranslateCalledOnButtonPress) {
- CreateInfoBar();
+ CreateInfoBar(TranslateInfoBarDelegate::BEFORE_TRANSLATE);
- EXPECT_CALL(*infobar_delegate_, Translate()).Times(1);
+ EXPECT_CALL(*infobar_delegate(), Translate()).Times(1);
[infobar_controller_ ok:nil];
}
@@ -129,7 +140,7 @@
TEST_F(TranslationInfoBarTest, TranslateCalledInErrorMode) {
CreateInfoBar(TranslateInfoBarDelegate::TRANSLATION_ERROR);
- EXPECT_CALL(*infobar_delegate_, Translate()).Times(1);
+ EXPECT_CALL(*infobar_delegate(), Translate()).Times(1);
[infobar_controller_ ok:nil];
}
@@ -136,15 +147,16 @@
// Check that clicking the "Show Original button calls RevertTranslation().
TEST_F(TranslationInfoBarTest, RevertCalledOnButtonPress) {
- CreateInfoBar();
+ CreateInfoBar(TranslateInfoBarDelegate::BEFORE_TRANSLATE);
- EXPECT_CALL(*infobar_delegate_, RevertTranslation()).Times(1);
+ EXPECT_CALL(*infobar_delegate(), RevertTranslation()).Times(1);
[infobar_controller_ showOriginal:nil];
}
// Check that items in the options menu are hooked up correctly.
TEST_F(TranslationInfoBarTest, OptionsMenuItemsHookedUp) {
- EXPECT_CALL(*infobar_delegate_, Translate())
+ CreateInfoBar(TranslateInfoBarDelegate::BEFORE_TRANSLATE);
+ EXPECT_CALL(*infobar_delegate(), Translate())
.Times(0);
[infobar_controller_ rebuildOptionsMenu:NO];
@@ -168,19 +180,19 @@
NSMenuItem* aboutTranslateItem = [optionsMenuItems objectAtIndex:6];
{
- EXPECT_CALL(*infobar_delegate_, ToggleAlwaysTranslate())
+ EXPECT_CALL(*infobar_delegate(), ToggleAlwaysTranslate())
.Times(1);
[infobar_controller_ optionsMenuChanged:alwaysTranslateLanguateItem];
}
{
- EXPECT_CALL(*infobar_delegate_, ToggleTranslatableLanguageByPrefs())
+ EXPECT_CALL(*infobar_delegate(), ToggleTranslatableLanguageByPrefs())
.Times(1);
[infobar_controller_ optionsMenuChanged:neverTranslateLanguateItem];
}
{
- EXPECT_CALL(*infobar_delegate_, ToggleSiteBlacklist())
+ EXPECT_CALL(*infobar_delegate(), ToggleSiteBlacklist())
.Times(1);
[infobar_controller_ optionsMenuChanged:neverTranslateSiteItem];
}
@@ -198,13 +210,13 @@
// translate" mode doesn't trigger a translation or change state.
// http://crbug.com/36666
TEST_F(TranslationInfoBarTest, Bug36666) {
- EXPECT_CALL(*infobar_delegate_, Translate())
+ CreateInfoBar(TranslateInfoBarDelegate::BEFORE_TRANSLATE);
+ EXPECT_CALL(*infobar_delegate(), Translate())
.Times(0);
- CreateInfoBar();
int arbitrary_index = 2;
[infobar_controller_ sourceLanguageModified:arbitrary_index];
- EXPECT_CALL(*infobar_delegate_, Translate())
+ EXPECT_CALL(*infobar_delegate(), Translate())
.Times(0);
}
@@ -212,11 +224,10 @@
// each of the states.
// http://crbug.com/36895
TEST_F(TranslationInfoBarTest, Bug36895) {
- EXPECT_CALL(*infobar_delegate_, Translate())
- .Times(0);
-
for (size_t i = 0; i < arraysize(kTranslateToolbarStates); ++i) {
CreateInfoBar(kTranslateToolbarStates[i]);
+ EXPECT_CALL(*infobar_delegate(), Translate())
+ .Times(0);
EXPECT_TRUE(
[infobar_controller_ verifyLayout]) << "Layout wrong, for state #" << i;
}
@@ -251,5 +262,3 @@
EXPECT_TRUE([[controller alwaysTranslateButton] superview] == nil);
EXPECT_TRUE([[controller neverTranslateButton] superview] != nil);
}
-
-} // namespace
« no previous file with comments | « chrome/browser/ui/cocoa/infobars/translate_infobar_base.mm ('k') | chrome/browser/ui/cocoa/keystone_infobar_delegate.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698