blob: 08411051d074d0025df10a221aba0c05e1828d24 [file] [log] [blame]
// Copyright 2013 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.
#ifndef CHROME_BROWSER_UI_TRANSLATE_TRANSLATE_BUBBLE_FACTORY_H_
#define CHROME_BROWSER_UI_TRANSLATE_TRANSLATE_BUBBLE_FACTORY_H_
#include <string>
#include "chrome/browser/translate/chrome_translate_client.h"
#include "chrome/browser/ui/translate/translate_bubble_model.h"
#include "components/translate/core/common/translate_errors.h"
class BrowserWindow;
enum class ShowTranslateBubbleResult;
namespace content {
class WebContents;
}
// Factory to show the Translate bubble.
class TranslateBubbleFactory {
public:
virtual ~TranslateBubbleFactory();
// Shows the translate bubble. The behavior depends on the current factory's
// implementation.
static ShowTranslateBubbleResult Show(
BrowserWindow* window,
content::WebContents* web_contents,
translate::TranslateStep step,
const std::string& source_language,
const std::string& target_language,
translate::TranslateErrors::Type error_type);
// Sets the factory to change the behavior how to show the bubble.
// TranslateBubbleFactory doesn't take the ownership of |factory|.
static void SetFactory(TranslateBubbleFactory* factory);
protected:
// Shows the translate bubble.
virtual ShowTranslateBubbleResult ShowImplementation(
BrowserWindow* window,
content::WebContents* web_contents,
translate::TranslateStep step,
const std::string& source_language,
const std::string& target_language,
translate::TranslateErrors::Type error_type) = 0;
private:
static TranslateBubbleFactory* current_factory_;
};
#endif // CHROME_BROWSER_UI_TRANSLATE_TRANSLATE_BUBBLE_FACTORY_H_