diff options
Diffstat (limited to 'chrome/browser/cocoa/translate_infobar.mm')
-rw-r--r-- | chrome/browser/cocoa/translate_infobar.mm | 84 |
1 files changed, 7 insertions, 77 deletions
diff --git a/chrome/browser/cocoa/translate_infobar.mm b/chrome/browser/cocoa/translate_infobar.mm index bb277db..f727401 100644 --- a/chrome/browser/cocoa/translate_infobar.mm +++ b/chrome/browser/cocoa/translate_infobar.mm @@ -15,6 +15,7 @@ #import "chrome/browser/cocoa/infobar_controller.h" #import "chrome/browser/cocoa/infobar_gradient_view.h" #include "chrome/browser/tab_contents/tab_contents.h" +#include "chrome/browser/translate/translate_infobars_delegates.h" #include "chrome/common/notification_service.h" #include "grit/generated_resources.h" #include "grit/locale_settings.h" @@ -57,21 +58,6 @@ void VerticallyCenterView(NSView *toMove) { [toMove setFrame:viewFrame]; } -// Check that the control |before| is ordered visually before the |after| -// control. -// Also, check that there is space between them. -bool VerifyControlOrderAndSpacing(id before, id after) { - NSRect beforeFrame = [before frame]; - NSRect afterFrame = [after frame]; - NSUInteger spaceBetweenControls = -1; - - spaceBetweenControls = NSMaxX(beforeFrame) - NSMinX(afterFrame); - // RTL case to be used when we have an RTL version of this UI. - // spaceBetweenControls = NSMaxX(afterFrame) - NSMinX(beforeFrame); - - return (spaceBetweenControls >= 0); -} - // Creates a label control in the style we need for the translate infobar's // labels within |bounds|. NSTextField* CreateLabel(NSRect bounds) { @@ -148,6 +134,12 @@ class TranslateNotificationObserverBridge : // Returns the main translate delegate. - (TranslateInfoBarDelegate*)delegate; +// Main function to update the toolbar graphic state and data model after +// the state has changed. +// Controls are moved around as needed and visibility changed to match the +// current state. +- (void)updateState; + // Make the infobar blue. - (void)setInfoBarGradientColor; @@ -548,68 +540,6 @@ class TranslateNotificationObserverBridge : } } -#pragma mark TestingAPI -- (NSMenu*)optionsMenu { - return [optionsPopUp_ menu]; -} - -- (bool)verifyLayout:(TranslateInfoBarDelegate::TranslateState)state { - NSArray* allControls = [NSArray arrayWithObjects:label_, label2_.get(), - label3_.get(), translatingLabel_.get(), fromLanguagePopUp_.get(), - toLanguagePopUp_.get(), optionsPopUp_.get(), closeButton_, nil]; - - // Array of all visible controls ordered from start -> end. - NSArray* visibleControls = nil; - - switch (state) { - case TranslateInfoBarDelegate::kBeforeTranslate: - visibleControls = [NSArray arrayWithObjects:label_, - fromLanguagePopUp_.get(), label2_.get(), optionsPopUp_.get(), - closeButton_, nil]; - break; - case TranslateInfoBarDelegate::kTranslating: - visibleControls = [NSArray arrayWithObjects:label_, - fromLanguagePopUp_.get(), label2_.get(), translatingLabel_.get(), - optionsPopUp_.get(), closeButton_, nil]; - break; - case TranslateInfoBarDelegate::kAfterTranslate: - visibleControls = [NSArray arrayWithObjects:label_, - fromLanguagePopUp_.get(), label2_.get(), toLanguagePopUp_.get(), - optionsPopUp_.get(), closeButton_, nil]; - break; - default: - NOTREACHED() << "Unknown state"; - return false; - } - - // Step 1: Make sure control visibility is what we expect. - for (NSUInteger i = 0; i < [allControls count]; ++i) { - id control = [allControls objectAtIndex:i]; - bool hasSuperView = [control superview]; - bool expectedVisibility = [visibleControls containsObject:control]; - if (expectedVisibility != hasSuperView) { - LOG(ERROR) << - "Control @" << i << (hasSuperView ? " has" : " doesn't have") << - "a superview" << base::SysNSStringToUTF8([control description]); - return false; - } - } - - // Step 2: Check that controls are ordered correctly with no overlap. - id previousControl = nil; - for (NSUInteger i = 0; i < [allControls count]; ++i) { - id control = [allControls objectAtIndex:i]; - if (!VerifyControlOrderAndSpacing(previousControl, control)) { - LOG(ERROR) << - "Control @" << i << " not ordered correctly: " << - base::SysNSStringToUTF8([control description]); - return false; - } - previousControl = control; - } - return true; -} - @end #pragma mark CreateInfoBar implementation. |