#include "chrome/browser/ui/chrome_pages.h"
#include "chrome/browser/ui/translate/translate_bubble_model_impl.h"
#include "chrome/common/url_constants.h"
+#include "chrome/grit/generated_resources.h"
#include "components/translate/core/browser/translate_download_manager.h"
#include "components/translate/core/browser/translate_manager.h"
#include "components/translate/core/browser/translate_ui_delegate.h"
#include "content/public/browser/web_contents.h"
-#include "grit/generated_resources.h"
#include "ui/base/l10n/l10n_util.h"
#include "ui/base/models/combobox_model.h"
#include "ui/base/models/simple_combobox_model.h"
-#include "ui/base/resource/resource_bundle.h"
#include "ui/views/controls/button/checkbox.h"
#include "ui/views/controls/button/label_button.h"
#include "ui/views/controls/combobox/combobox.h"
}
// static
-void TranslateBubbleView::ShowBubble(views::View* anchor_view,
- content::WebContents* web_contents,
- translate::TranslateStep step,
- TranslateErrors::Type error_type) {
+void TranslateBubbleView::ShowBubble(
+ views::View* anchor_view,
+ content::WebContents* web_contents,
+ translate::TranslateStep step,
+ translate::TranslateErrors::Type error_type,
+ bool is_user_gesture) {
if (IsShowing()) {
// When the user reads the advanced setting panel, the bubble should not be
// changed because he/she is focusing on the bubble.
translate_bubble_view_->SwitchToErrorView(error_type);
}
return;
+ } else {
+ if (step == translate::TRANSLATE_STEP_AFTER_TRANSLATE &&
+ !is_user_gesture) {
+ return;
+ }
}
std::string source_language;
ChromeTranslateClient::GetTranslateLanguages(
web_contents, &source_language, &target_language);
- scoped_ptr<TranslateUIDelegate> ui_delegate(new TranslateUIDelegate(
- ChromeTranslateClient::GetManagerFromWebContents(web_contents)
- ->GetWeakPtr(),
- source_language,
- target_language));
+ scoped_ptr<translate::TranslateUIDelegate> ui_delegate(
+ new translate::TranslateUIDelegate(
+ ChromeTranslateClient::GetManagerFromWebContents(web_contents)
+ ->GetWeakPtr(),
+ source_language,
+ target_language));
scoped_ptr<TranslateBubbleModel> model(
new TranslateBubbleModelImpl(step, ui_delegate.Pass()));
TranslateBubbleView* view = new TranslateBubbleView(anchor_view,
model.Pass(),
error_type,
web_contents);
- views::BubbleDelegateView::CreateBubble(view)->Show();
+ if (is_user_gesture)
+ views::BubbleDelegateView::CreateBubble(view)->Show();
+ else
+ views::BubbleDelegateView::CreateBubble(view)->ShowInactive();
+}
+
+// static
+void TranslateBubbleView::CloseBubble() {
+ if (!IsShowing())
+ return;
+
+ translate_bubble_view_->GetWidget()->Close();
}
// static
TranslateBubbleView::TranslateBubbleView(
views::View* anchor_view,
scoped_ptr<TranslateBubbleModel> model,
- TranslateErrors::Type error_type,
+ translate::TranslateErrors::Type error_type,
content::WebContents* web_contents)
: BubbleDelegateView(anchor_view, views::BubbleBorder::TOP_RIGHT),
WebContentsObserver(web_contents),
model_(model.Pass()),
error_type_(error_type),
is_in_incognito_window_(
- web_contents ?
- web_contents->GetBrowserContext()->IsOffTheRecord() : false),
+ web_contents ? web_contents->GetBrowserContext()->IsOffTheRecord()
+ : false),
translate_executed_(false),
denial_button_clicked_(false) {
if (model_->GetViewState() !=
SizeToContents();
}
-void TranslateBubbleView::SwitchToErrorView(TranslateErrors::Type error_type) {
+void TranslateBubbleView::SwitchToErrorView(
+ translate::TranslateErrors::Type error_type) {
SwitchView(TranslateBubbleModel::VIEW_STATE_ERROR);
error_type_ = error_type;
model_->ShowError(error_type);