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