15d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
25d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// found in the LICENSE file.
45d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#ifndef COMPONENTS_TRANSLATE_CORE_BROWSER_TRANSLATE_DRIVER_H_
65d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#define COMPONENTS_TRANSLATE_CORE_BROWSER_TRANSLATE_DRIVER_H_
75d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
8c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#include <string>
9c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
10c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochclass GURL;
1123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)namespace translate {
135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Interface that allows Translate core code to interact with its driver (i.e.,
155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// obtain information from it and give information to it). A concrete
165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// implementation must be provided by the driver.
175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class TranslateDriver {
185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) public:
195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // Returns true if the current page was navigated through a link.
205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  virtual bool IsLinkNavigation() = 0;
215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // Called when Translate is enabled or disabled.
235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  virtual void OnTranslateEnabledChanged() = 0;
245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // Called when the page is "translated" state of the page changed.
265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  virtual void OnIsPageTranslatedChanged() = 0;
2723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
28c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  // Translates the page contents from |source_lang| to |target_lang|.
29116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual void TranslatePage(int page_seq_no,
30116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch                             const std::string& translate_script,
31c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch                             const std::string& source_lang,
32c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch                             const std::string& target_lang) = 0;
33c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
34c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  // Reverts the contents of the page to its original language.
35116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual void RevertTranslation(int page_seq_no) = 0;
36c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
37c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  // Returns whether the user is currently operating in off-the-record mode.
38c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  virtual bool IsOffTheRecord() = 0;
39c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
40c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  // Returns the mime type of the current page.
41c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  virtual const std::string& GetContentsMimeType() = 0;
42c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
43c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  // Returns the last committed URL, or an empty GURL if there is no committed
44c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  // URL.
45c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  virtual const GURL& GetLastCommittedURL() = 0;
46c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
47c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  // Returns the active URL, or an empty GURL if there is no active URL.
48c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  virtual const GURL& GetActiveURL() = 0;
49c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
50c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  // Returns the visible URL, or an empty GURL if there is no visible URL.
51c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  virtual const GURL& GetVisibleURL() = 0;
52c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
53c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  // Returns whether the driver has access to the current page.
54c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  virtual bool HasCurrentPage() = 0;
55c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
56cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  // Opens |url| in a new tab.
57cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  virtual void OpenUrlInNewTab(const GURL& url) = 0;
585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)};
595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)}  // namespace translate
615f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif  // COMPONENTS_TRANSLATE_CORE_BROWSER_TRANSLATE_DRIVER_H_
63