• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2013 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 CHROME_BROWSER_UI_WEBUI_WELCOME_HANDLER_ANDROID_H_
6 #define CHROME_BROWSER_UI_WEBUI_WELCOME_HANDLER_ANDROID_H_
7 
8 #include "base/scoped_observer.h"
9 #include "chrome/browser/sync/profile_sync_service.h"
10 #include "chrome/browser/sync/profile_sync_service_observer.h"
11 #include "content/public/browser/web_ui_message_handler.h"
12 
13 namespace base {
14 class ListValue;
15 }
16 
17 // Handler class for chrome://welcome page.
18 class WelcomeHandler : public content::WebUIMessageHandler,
19                        public ProfileSyncServiceObserver {
20  public:
21   WelcomeHandler();
22   virtual ~WelcomeHandler();
23 
24   // content::WebUIMessageHandler implementation.
25   virtual void RegisterMessages() OVERRIDE;
26 
27   // Callback for the "updateSyncFooterVisibility" message. This makes the sync
28   // footer in the page visible if sync is enabled.
29   void HandleUpdateSyncFooterVisibility(const base::ListValue* args);
30 
31   // Callback for the "showSyncSettings" message. This opens the sync settings
32   // menu fragment.
33   void HandleShowSyncSettings(const base::ListValue* args);
34 
35   // Callback for the "showTermsOfService" message. This opens the terms of
36   // service popup.
37   void HandleShowTermsOfService(const base::ListValue* args);
38 
39   // ProfileSyncServiceObserver implementation
40   virtual void OnStateChanged() OVERRIDE;
41 
42  private:
43   // Update the sync footer visibility. Set |forced| if you want to force to
44   // send an update to the renderer regardless of whether we assume the state
45   // is up to date or not.
46   void UpdateSyncFooterVisibility(bool forced);
47 
48   // Cached pointer to the sync service for this profile.
49   ProfileSyncService* sync_service_;
50 
51   ScopedObserver<ProfileSyncService, WelcomeHandler> observer_manager_;
52 
53   // Whether the sync footer is visible on the page.
54   bool is_sync_footer_visible_;
55 
56   DISALLOW_COPY_AND_ASSIGN(WelcomeHandler);
57 };
58 
59 #endif  // CHROME_BROWSER_UI_WEBUI_WELCOME_HANDLER_ANDROID_H_
60