Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / chrome / browser / ui / cocoa / translate / translate_bubble_controller.h
blob6fe1d52c541d01bdefd4b11213be1a46074a882e
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #import <Cocoa/Cocoa.h>
7 #include "base/mac/scoped_nsobject.h"
8 #include "base/memory/scoped_ptr.h"
9 #include "chrome/browser/translate/chrome_translate_client.h"
10 #import "chrome/browser/ui/cocoa/base_bubble_controller.h"
11 #include "components/translate/core/common/translate_errors.h"
13 @class BrowserWindowController;
15 class LanguageComboboxModel;
16 class TranslateBubbleModel;
17 class TranslateDenialComboboxModel;
19 namespace content {
20 class WebContents;
23 // Displays the Translate bubble. The Translate bubble is a bubble which
24 // pops up when clicking the Translate icon on Omnibox. This bubble
25 // allows us to translate a foreign page into user-selected language,
26 // revert this, and configure the translate setting.
27 @interface TranslateBubbleController : BaseBubbleController {
28 @private
29 content::WebContents* webContents_;
30 scoped_ptr<TranslateBubbleModel> model_;
32 // The views of each state. The keys are TranslateBubbleModel::ViewState,
33 // and the values are NSView*.
34 base::scoped_nsobject<NSDictionary> views_;
36 // The 'Done' or 'Translate' button on the advanced (option) panel.
37 NSButton* advancedDoneButton_;
39 // The 'Cancel' button on the advanced (option) panel.
40 NSButton* advancedCancelButton_;
42 // The 'Always translate' checkbox on the advanced (option) panel.
43 // This is nil when the current WebContents is in an incognito window.
44 NSButton* alwaysTranslateCheckbox_;
46 // The combobox model which is used to deny translation at the view before
47 // translate.
48 scoped_ptr<TranslateDenialComboboxModel> translateDenialComboboxModel_;
50 // The combobox model for source languages on the advanced (option) panel.
51 scoped_ptr<LanguageComboboxModel> sourceLanguageComboboxModel_;
53 // The combobox model for target languages on the advanced (option) panel.
54 scoped_ptr<LanguageComboboxModel> targetLanguageComboboxModel_;
56 // Whether the translation is actually executed once at least.
57 BOOL translateExecuted_;
60 @property(readonly, nonatomic) const content::WebContents* webContents;
61 @property(readonly, nonatomic) const TranslateBubbleModel* model;
63 - (id)initWithParentWindow:(BrowserWindowController*)controller
64 model:(scoped_ptr<TranslateBubbleModel>)model
65 webContents:(content::WebContents*)webContents;
66 - (void)switchView:(TranslateBubbleModel::ViewState)viewState;
67 - (void)switchToErrorView:(translate::TranslateErrors::Type)errorType;
69 @end
71 // The methods on this category are used internally by the controller and are
72 // only exposed for testing purposes. DO NOT USE OTHERWISE.
73 @interface TranslateBubbleController (ExposedForTesting)
74 - (void)handleTranslateButtonPressed;
75 @end