1e2efa55c7a108e4828a8b8cc6614efb669fd0ce
[platform/framework/web/crosswalk.git] / src / components / translate / content / browser / content_translate_driver.h
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_CONTENT_BROWSER_CONTENT_TRANSLATE_DRIVER_H_
6 #define COMPONENTS_TRANSLATE_CONTENT_BROWSER_CONTENT_TRANSLATE_DRIVER_H_
7
8 #include "components/translate/core/browser/translate_driver.h"
9
10 #include "components/translate/core/browser/language_state.h"
11
12 namespace content {
13 struct LoadCommittedDetails;
14 class NavigationController;
15 class WebContents;
16 }
17
18 // Content implementation of TranslateDriver.
19 class ContentTranslateDriver : public TranslateDriver {
20  public:
21
22   // The observer for the ContentTranslateDriver.
23   class Observer {
24    public:
25     // Handles when the value of IsPageTranslated is changed.
26     virtual void OnIsPageTranslatedChanged(content::WebContents* source) = 0;
27
28     // Handles when the value of translate_enabled is changed.
29     virtual void OnTranslateEnabledChanged(content::WebContents* source) = 0;
30
31    protected:
32     virtual ~Observer() {}
33   };
34
35   ContentTranslateDriver(content::NavigationController* nav_controller);
36   virtual ~ContentTranslateDriver();
37
38   // Sets the Observer. Calling this method is optional.
39   void set_observer(Observer* observer) { observer_ = observer; }
40
41   // Must be called on navigations.
42   void DidNavigate(const content::LoadCommittedDetails& details);
43
44   // TranslateDriver methods.
45   virtual void OnIsPageTranslatedChanged() OVERRIDE;
46   virtual void OnTranslateEnabledChanged() OVERRIDE;
47   virtual bool IsLinkNavigation() OVERRIDE;
48   virtual LanguageState& GetLanguageState() OVERRIDE;
49
50  private:
51   // The navigation controller of the tab we are associated with.
52   content::NavigationController* navigation_controller_;
53
54   LanguageState language_state_;
55   Observer* observer_;
56
57   DISALLOW_COPY_AND_ASSIGN(ContentTranslateDriver);
58 };
59
60 #endif  // COMPONENTS_TRANSLATE_CONTENT_BROWSER_CONTENT_TRANSLATE_DRIVER_H_