1// Copyright 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_APP_LIST_START_PAGE_HANDLER_H_
6#define CHROME_BROWSER_UI_WEBUI_APP_LIST_START_PAGE_HANDLER_H_
7
8#include "base/basictypes.h"
9#include "base/compiler_specific.h"
10#include "chrome/browser/ui/app_list/recommended_apps_observer.h"
11#include "content/public/browser/web_ui_message_handler.h"
12
13namespace base {
14class ListValue;
15}
16
17namespace app_list {
18
19class RecommendedApps;
20
21// Handler for the app launcher start page.
22class StartPageHandler : public content::WebUIMessageHandler,
23                         public RecommendedAppsObserver {
24 public:
25  StartPageHandler();
26  virtual ~StartPageHandler();
27
28 private:
29  // content::WebUIMessageHandler overrides:
30  virtual void RegisterMessages() OVERRIDE;
31
32  // RecommendedAppsObserver overrdies:
33  virtual void OnRecommendedAppsChanged() OVERRIDE;
34
35  // Creates a ListValue for the recommended apps and sends it to js side.
36  void SendRecommendedApps();
37
38  // JS callbacks.
39  void HandleInitialize(const base::ListValue* args);
40  void HandleLaunchApp(const base::ListValue* args);
41  void HandleSpeechResult(const base::ListValue* args);
42  void HandleSpeechSoundLevel(const base::ListValue* args);
43  void HandleSpeechRecognition(const base::ListValue* args);
44
45  RecommendedApps* recommended_apps_;  // Not owned.
46
47  DISALLOW_COPY_AND_ASSIGN(StartPageHandler);
48};
49
50}  // namespace app_list
51
52#endif  // CHROME_BROWSER_UI_WEBUI_APP_LIST_START_PAGE_HANDLER_H_
53