| Index: ios/web_view/shell/translate_controller.mm
|
| diff --git a/ios/web_view/shell/translate_controller.mm b/ios/web_view/shell/translate_controller.mm
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..8306de6298de1b76d5a8d5ff79d5ff23c03b6401
|
| --- /dev/null
|
| +++ b/ios/web_view/shell/translate_controller.mm
|
| @@ -0,0 +1,69 @@
|
| +// Copyright 2014 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.
|
| +
|
| +#import "ios/web_view/shell/translate_controller.h"
|
| +
|
| +#import <UIKit/UIKit.h>
|
| +
|
| +#include "base/logging.h"
|
| +#import "base/mac/scoped_nsobject.h"
|
| +#import "ios/web_view/public/criwv_translate_manager.h"
|
| +
|
| +@interface TranslateController () {
|
| + base::scoped_nsobject<UIAlertController> _beforeTranslateActionSheet;
|
| + base::scoped_nsprotocol<id<CRIWVTranslateManager>> _translateManager;
|
| +}
|
| +@end
|
| +
|
| +@implementation TranslateController
|
| +
|
| +- (void)dealloc {
|
| + [_beforeTranslateActionSheet dismissViewControllerAnimated:YES
|
| + completion:nil];
|
| + [super dealloc];
|
| +}
|
| +
|
| +#pragma mark CRIWVTranslateDelegate methods
|
| +
|
| +- (void)translateStepChanged:(ios_web_view::CRIWVTransateStep)step
|
| + manager:(id<CRIWVTranslateManager>)manager {
|
| + if (step == ios_web_view::CRIWVTransateStepBeforeTranslate) {
|
| + DCHECK(!_translateManager);
|
| + DCHECK(!_beforeTranslateActionSheet);
|
| + _translateManager.reset([manager retain]);
|
| + _beforeTranslateActionSheet.reset([[UIAlertController
|
| + alertControllerWithTitle:nil
|
| + message:@"Translate?"
|
| + preferredStyle:UIAlertControllerStyleActionSheet] retain]);
|
| + UIAlertAction* cancelAction =
|
| + [UIAlertAction actionWithTitle:@"Nope."
|
| + style:UIAlertActionStyleCancel
|
| + handler:^(UIAlertAction* action) {
|
| + DCHECK(_beforeTranslateActionSheet);
|
| + _beforeTranslateActionSheet.reset();
|
| + DCHECK(_translateManager);
|
| + _translateManager.reset();
|
| + }];
|
| + [_beforeTranslateActionSheet addAction:cancelAction];
|
| +
|
| + UIAlertAction* translateAction =
|
| + [UIAlertAction actionWithTitle:@"Yes!"
|
| + style:UIAlertActionStyleDefault
|
| + handler:^(UIAlertAction* action) {
|
| + DCHECK(_beforeTranslateActionSheet);
|
| + _beforeTranslateActionSheet.reset();
|
| + DCHECK(_translateManager);
|
| + [_translateManager translate];
|
| + _translateManager.reset();
|
| + }];
|
| + [_beforeTranslateActionSheet addAction:translateAction];
|
| +
|
| + [[UIApplication sharedApplication].keyWindow.rootViewController
|
| + presentViewController:_beforeTranslateActionSheet
|
| + animated:YES
|
| + completion:nil];
|
| + }
|
| +}
|
| +
|
| +@end
|
|
|