| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #import <Cocoa/Cocoa.h> | 5 #import <Cocoa/Cocoa.h> |
| 6 #import "chrome/browser/ui/cocoa/translate/translate_infobar_base.h" | 6 #import "chrome/browser/ui/cocoa/translate/translate_infobar_base.h" |
| 7 | 7 |
| 8 #include "base/logging.h" | 8 #include "base/logging.h" |
| 9 #include "base/metrics/histogram.h" | 9 #include "base/metrics/histogram.h" |
| 10 #include "base/sys_string_conversions.h" | 10 #include "base/sys_string_conversions.h" |
| (...skipping 502 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 513 [[optionsPopUp_ cell] setArrowPosition:NSPopUpArrowAtCenter]; | 513 [[optionsPopUp_ cell] setArrowPosition:NSPopUpArrowAtCenter]; |
| 514 MoveControl(closeButton_, optionsPopUp_, spaceBetweenControls_, false); | 514 MoveControl(closeButton_, optionsPopUp_, spaceBetweenControls_, false); |
| 515 if (!VerifyControlOrderAndSpacing(lastView, optionsPopUp_)) { | 515 if (!VerifyControlOrderAndSpacing(lastView, optionsPopUp_)) { |
| 516 [optionsPopUp_ setHidden:YES]; | 516 [optionsPopUp_ setHidden:YES]; |
| 517 } | 517 } |
| 518 } | 518 } |
| 519 } | 519 } |
| 520 | 520 |
| 521 // Called when "Translate" button is clicked. | 521 // Called when "Translate" button is clicked. |
| 522 - (IBAction)ok:(id)sender { | 522 - (IBAction)ok:(id)sender { |
| 523 // The delegate may be NULL if the infobar was closed. | 523 if (![self owned]) |
| 524 return; // We're closing; don't call anything, it might access the owner. |
| 524 TranslateInfoBarDelegate* delegate = [self delegate]; | 525 TranslateInfoBarDelegate* delegate = [self delegate]; |
| 525 if (delegate) { | 526 TranslateInfoBarDelegate::Type state = delegate->type(); |
| 526 TranslateInfoBarDelegate::Type state = delegate->type(); | 527 DCHECK(state == TranslateInfoBarDelegate::BEFORE_TRANSLATE || |
| 527 DCHECK(state == TranslateInfoBarDelegate::BEFORE_TRANSLATE || | 528 state == TranslateInfoBarDelegate::TRANSLATION_ERROR); |
| 528 state == TranslateInfoBarDelegate::TRANSLATION_ERROR); | 529 delegate->Translate(); |
| 529 delegate->Translate(); | |
| 530 } | |
| 531 UMA_HISTOGRAM_COUNTS("Translate.Translate", 1); | 530 UMA_HISTOGRAM_COUNTS("Translate.Translate", 1); |
| 532 } | 531 } |
| 533 | 532 |
| 534 // Called when someone clicks on the "Nope" button. | 533 // Called when someone clicks on the "Nope" button. |
| 535 - (IBAction)cancel:(id)sender { | 534 - (IBAction)cancel:(id)sender { |
| 536 // The delegate may be NULL if the infobar was closed. | 535 if (![self owned]) |
| 536 return; // We're closing; don't call anything, it might access the owner. |
| 537 TranslateInfoBarDelegate* delegate = [self delegate]; | 537 TranslateInfoBarDelegate* delegate = [self delegate]; |
| 538 if (delegate) { | 538 DCHECK(delegate->type() == TranslateInfoBarDelegate::BEFORE_TRANSLATE); |
| 539 DCHECK(delegate->type() == TranslateInfoBarDelegate::BEFORE_TRANSLATE); | 539 delegate->TranslationDeclined(); |
| 540 delegate->TranslationDeclined(); | 540 UMA_HISTOGRAM_COUNTS("Translate.DeclineTranslate", 1); |
| 541 UMA_HISTOGRAM_COUNTS("Translate.DeclineTranslate", 1); | 541 [super removeSelf]; |
| 542 } | |
| 543 [super dismiss:nil]; | |
| 544 } | 542 } |
| 545 | 543 |
| 546 - (void)messageButtonPressed:(id)sender { | 544 - (void)messageButtonPressed:(id)sender { |
| 547 // The delegate may be NULL if the infobar was closed. | 545 if (![self owned]) |
| 548 TranslateInfoBarDelegate* delegate = [self delegate]; | 546 return; // We're closing; don't call anything, it might access the owner. |
| 549 if (delegate) | 547 [self delegate]->MessageInfoBarButtonPressed(); |
| 550 delegate->MessageInfoBarButtonPressed(); | |
| 551 } | 548 } |
| 552 | 549 |
| 553 - (IBAction)showOriginal:(id)sender { | 550 - (IBAction)showOriginal:(id)sender { |
| 554 // The delegate may be NULL if the infobar was closed. | 551 if (![self owned]) |
| 555 TranslateInfoBarDelegate* delegate = [self delegate]; | 552 return; // We're closing; don't call anything, it might access the owner. |
| 556 if (delegate) | 553 [self delegate]->RevertTranslation(); |
| 557 delegate->RevertTranslation(); | |
| 558 } | 554 } |
| 559 | 555 |
| 560 // Called when any of the language drop down menus are changed. | 556 // Called when any of the language drop down menus are changed. |
| 561 - (void)languageMenuChanged:(id)item { | 557 - (void)languageMenuChanged:(id)item { |
| 562 // The delegate may be NULL if the infobar was closed. | 558 if (![self owned]) |
| 563 if (![self delegate]) | 559 return; // We're closing; don't call anything, it might access the owner. |
| 564 return; | |
| 565 if ([item respondsToSelector:@selector(tag)]) { | 560 if ([item respondsToSelector:@selector(tag)]) { |
| 566 int cmd = [item tag]; | 561 int cmd = [item tag]; |
| 567 if (cmd >= IDC_TRANSLATE_TARGET_LANGUAGE_BASE) { | 562 if (cmd >= IDC_TRANSLATE_TARGET_LANGUAGE_BASE) { |
| 568 cmd -= IDC_TRANSLATE_TARGET_LANGUAGE_BASE; | 563 cmd -= IDC_TRANSLATE_TARGET_LANGUAGE_BASE; |
| 569 [self targetLanguageModified:cmd]; | 564 [self targetLanguageModified:cmd]; |
| 570 return; | 565 return; |
| 571 } else if (cmd >= IDC_TRANSLATE_ORIGINAL_LANGUAGE_BASE) { | 566 } else if (cmd >= IDC_TRANSLATE_ORIGINAL_LANGUAGE_BASE) { |
| 572 cmd -= IDC_TRANSLATE_ORIGINAL_LANGUAGE_BASE; | 567 cmd -= IDC_TRANSLATE_ORIGINAL_LANGUAGE_BASE; |
| 573 [self sourceLanguageModified:cmd]; | 568 [self sourceLanguageModified:cmd]; |
| 574 return; | 569 return; |
| 575 } | 570 } |
| 576 } | 571 } |
| 577 NOTREACHED() << "Language menu was changed with a bad language ID"; | 572 NOTREACHED() << "Language menu was changed with a bad language ID"; |
| 578 } | 573 } |
| 579 | 574 |
| 580 // Called when the options menu is changed. | 575 // Called when the options menu is changed. |
| 581 - (void)optionsMenuChanged:(id)item { | 576 - (void)optionsMenuChanged:(id)item { |
| 577 if (![self owned]) |
| 578 return; // We're closing; don't call anything, it might access the owner. |
| 582 if ([item respondsToSelector:@selector(tag)]) { | 579 if ([item respondsToSelector:@selector(tag)]) { |
| 583 int cmd = [item tag]; | 580 int cmd = [item tag]; |
| 584 // Danger Will Robinson! : This call can release the infobar (e.g. invoking | 581 // Danger Will Robinson! : This call can release the infobar (e.g. invoking |
| 585 // "About Translate" can open a new tab). | 582 // "About Translate" can open a new tab). |
| 586 // Do not access member variables after this line! | 583 // Do not access member variables after this line! |
| 587 optionsMenuModel_->ExecuteCommand(cmd); | 584 optionsMenuModel_->ExecuteCommand(cmd); |
| 588 } else { | 585 } else { |
| 589 NOTREACHED(); | 586 NOTREACHED(); |
| 590 } | 587 } |
| 591 } | 588 } |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 674 return false; | 671 return false; |
| 675 } | 672 } |
| 676 previousControl = control; | 673 previousControl = control; |
| 677 } | 674 } |
| 678 | 675 |
| 679 return true; | 676 return true; |
| 680 } | 677 } |
| 681 | 678 |
| 682 @end // TranslateInfoBarControllerBase (TestingAPI) | 679 @end // TranslateInfoBarControllerBase (TestingAPI) |
| 683 | 680 |
| OLD | NEW |