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.
4
5#ifndef COMPONENTS_TRANSLATE_CORE_BROWSER_TRANSLATE_DRIVER_H_
6#define COMPONENTS_TRANSLATE_CORE_BROWSER_TRANSLATE_DRIVER_H_
7
8#include <string>
9
10class GURL;
11
12namespace translate {
13
14// Interface that allows Translate core code to interact with its driver (i.e.,
15// obtain information from it and give information to it). A concrete
16// implementation must be provided by the driver.
17class TranslateDriver {
18 public:
19  // Returns true if the current page was navigated through a link.
20  virtual bool IsLinkNavigation() = 0;
21
22  // Called when Translate is enabled or disabled.
23  virtual void OnTranslateEnabledChanged() = 0;
24
25  // Called when the page is "translated" state of the page changed.
26  virtual void OnIsPageTranslatedChanged() = 0;
27
28  // Translates the page contents from |source_lang| to |target_lang|.
29  virtual void TranslatePage(int page_seq_no,
30                             const std::string& translate_script,
31                             const std::string& source_lang,
32                             const std::string& target_lang) = 0;
33
34  // Reverts the contents of the page to its original language.
35  virtual void RevertTranslation(int page_seq_no) = 0;
36
37  // Returns whether the user is currently operating in off-the-record mode.
38  virtual bool IsOffTheRecord() = 0;
39
40  // Returns the mime type of the current page.
41  virtual const std::string& GetContentsMimeType() = 0;
42
43  // Returns the last committed URL, or an empty GURL if there is no committed
44  // URL.
45  virtual const GURL& GetLastCommittedURL() = 0;
46
47  // Returns the active URL, or an empty GURL if there is no active URL.
48  virtual const GURL& GetActiveURL() = 0;
49
50  // Returns the visible URL, or an empty GURL if there is no visible URL.
51  virtual const GURL& GetVisibleURL() = 0;
52
53  // Returns whether the driver has access to the current page.
54  virtual bool HasCurrentPage() = 0;
55
56  // Opens |url| in a new tab.
57  virtual void OpenUrlInNewTab(const GURL& url) = 0;
58};
59
60}  // namespace translate
61
62#endif  // COMPONENTS_TRANSLATE_CORE_BROWSER_TRANSLATE_DRIVER_H_
63