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_EXTENSIONS_API_BRAILLE_DISPLAY_PRIVATE_BRAILLE_CONTROLLER_H_
6#define CHROME_BROWSER_EXTENSIONS_API_BRAILLE_DISPLAY_PRIVATE_BRAILLE_CONTROLLER_H_
7
8#include <string>
9
10#include "base/basictypes.h"
11#include "base/callback_forward.h"
12#include "base/memory/scoped_ptr.h"
13#include "base/values.h"
14#include "chrome/common/extensions/api/braille_display_private.h"
15
16namespace extensions {
17namespace api {
18namespace braille_display_private {
19class BrailleObserver;
20
21// Singleton class that controls the braille display.
22class BrailleController {
23 public:
24  static BrailleController* GetInstance();
25
26  virtual scoped_ptr<DisplayState> GetDisplayState() = 0;
27  virtual void WriteDots(const std::string& cells) = 0;
28  virtual void AddObserver(BrailleObserver* observer) = 0;
29  virtual void RemoveObserver(BrailleObserver* observer) = 0;
30
31 protected:
32  BrailleController();
33  virtual ~BrailleController();
34
35 private:
36  DISALLOW_COPY_AND_ASSIGN(BrailleController);
37};
38
39// Observer for events from the BrailleController
40class BrailleObserver {
41 public:
42  virtual void OnBrailleDisplayStateChanged(
43      const DisplayState& display_state) {}
44  virtual void OnBrailleKeyEvent(const KeyEvent& event) {}
45};
46
47}  // namespace braille_display_private
48}  // namespace api
49}  // namespace extensions
50
51#endif  // CHROME_BROWSER_EXTENSIONS_API_BRAILLE_DISPLAY_PRIVATE_BRAILLE_CONTROLLER_H_
52