123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)// found in the LICENSE file.
423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#ifndef COMPONENTS_TRANSLATE_CORE_BROWSER_TRANSLATE_CLIENT_H_
623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#define COMPONENTS_TRANSLATE_CORE_BROWSER_TRANSLATE_CLIENT_H_
723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
8c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#include <string>
9c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
10effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "base/memory/ref_counted.h"
1146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "base/memory/scoped_ptr.h"
12effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "components/translate/core/browser/translate_prefs.h"
13c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#include "components/translate/core/browser/translate_step.h"
14c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#include "components/translate/core/common/translate_errors.h"
15effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
16c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochclass GURL;
17effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochclass PrefService;
1846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
1946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)namespace infobars {
2046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)class InfoBar;
2146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)}
2223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)namespace translate {
245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class TranslateAcceptLanguages;
265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class TranslateDriver;
275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class TranslateInfoBarDelegate;
285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
2923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)// A client interface that needs to be supplied to TranslateManager by the
3023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)// embedder.
3123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)//
3223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)// Each client instance is associated with a given context within which a
3323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)// TranslateManager is used (e.g. a single tab).
3423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)class TranslateClient {
3523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) public:
3623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  // Gets the TranslateDriver associated with the client.
3723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  virtual TranslateDriver* GetTranslateDriver() = 0;
38effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
39effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  // Returns the associated PrefService.
40effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  virtual PrefService* GetPrefs() = 0;
41effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
42effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  // Returns the associated TranslatePrefs.
43effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  virtual scoped_ptr<TranslatePrefs> GetTranslatePrefs() = 0;
44effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
45effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  // Returns the associated TranslateAcceptLanguages.
46effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  virtual TranslateAcceptLanguages* GetTranslateAcceptLanguages() = 0;
47c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
4846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  // Returns the resource ID of the icon to be shown for the Translate infobars.
4946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  virtual int GetInfobarIconID() const = 0;
5046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
5146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  // Returns a translate infobar that owns |delegate|.
5246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  virtual scoped_ptr<infobars::InfoBar> CreateInfoBar(
5346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      scoped_ptr<TranslateInfoBarDelegate> delegate) const = 0;
5446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
55c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  // Called when the embedder should present UI to the user corresponding to the
56c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  // user's current |step|.
57c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  virtual void ShowTranslateUI(translate::TranslateStep step,
58c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch                               const std::string source_language,
59c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch                               const std::string target_language,
60c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch                               TranslateErrors::Type error_type,
61c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch                               bool triggered_from_menu) = 0;
62c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
63c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  // Returns true if the URL can be translated.
64c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  virtual bool IsTranslatableURL(const GURL& url) = 0;
65c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
66c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  // Presents |report_url|, a URL containing information relating to reporting
67c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  // a language detection error, to the user to allow them to report language
68c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  // detection errors as desired.
69c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  virtual void ShowReportLanguageDetectionErrorUI(const GURL& report_url) = 0;
7023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)};
7123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
725f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)}  // namespace translate
735f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
7423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#endif  // COMPONENTS_TRANSLATE_CORE_BROWSER_TRANSLATE_CLIENT_H_
75