158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// found in the LICENSE file.
458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "chrome/browser/extensions/api/braille_display_private/braille_controller.h"
658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "base/memory/scoped_ptr.h"
858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "base/memory/singleton.h"
958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "chrome/common/extensions/api/braille_display_private.h"
1058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
1158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)namespace extensions {
1258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)namespace api {
1358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)namespace braille_display_private {
1458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
1558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// Stub implementation of BrailleController for use when brlapi is not
1658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// enabled.
1758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)class BrailleControllerImpl : public BrailleController {
1858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) public:
1958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  static BrailleControllerImpl* GetInstance();
20d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  virtual scoped_ptr<DisplayState> GetDisplayState() OVERRIDE;
2158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual void WriteDots(const std::string& cells) OVERRIDE;
2258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual void AddObserver(BrailleObserver* observer) OVERRIDE;
2358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual void RemoveObserver(BrailleObserver* observer) OVERRIDE;
2458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
2558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) private:
2658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  BrailleControllerImpl();
2758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual ~BrailleControllerImpl();
2858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  friend struct DefaultSingletonTraits<BrailleControllerImpl>;
2958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(BrailleControllerImpl);
3058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)};
3158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
3258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)BrailleController::BrailleController() {
3358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)}
3458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
3558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)BrailleController::~BrailleController() {
3658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)}
3758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
3858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// static
3958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)BrailleController* BrailleController::GetInstance() {
4058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  return BrailleControllerImpl::GetInstance();
4158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)}
4258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
4358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)BrailleControllerImpl::BrailleControllerImpl() {
4458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)}
4558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
4658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)BrailleControllerImpl::~BrailleControllerImpl() {
4758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)}
4858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
4958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// static
5058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)BrailleControllerImpl* BrailleControllerImpl::GetInstance() {
5158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  return Singleton<BrailleControllerImpl,
5258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)                   LeakySingletonTraits<BrailleControllerImpl> >::get();
5358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)}
5458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
55d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)scoped_ptr<DisplayState> BrailleControllerImpl::GetDisplayState() {
56d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  return scoped_ptr<DisplayState>(new DisplayState()).Pass();
5758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)}
5858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
5958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)void BrailleControllerImpl::WriteDots(const std::string& cells) {
6058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)}
6158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
6258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)void BrailleControllerImpl::AddObserver(BrailleObserver* observer) {
6358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)}
6458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
6558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)void BrailleControllerImpl::RemoveObserver(BrailleObserver* observer) {
6658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)}
6758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
6858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)}  // namespace braille_display_private
6958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)}  // namespace api
7058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)}  // namespace extensions
71