1bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Copyright (c) 2009 The Chromium Authors. All rights reserved.
2bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Use of this source code is governed by a BSD-style license that can be
3bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// found in the LICENSE file.
4bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
5bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#include "chrome/browser/chromeos/cros/touchpad_library.h"
6bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
7bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#include "base/message_loop.h"
8bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#include "chrome/browser/chromeos/cros/cros_library.h"
9dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "content/browser/browser_thread.h"
10bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
11bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsennamespace chromeos {
12bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
13bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenclass TouchpadLibraryImpl : public TouchpadLibrary {
14bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen public:
15bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  TouchpadLibraryImpl() {}
16bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  virtual ~TouchpadLibraryImpl() {}
17bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
18bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  void SetSensitivity(int value) {
19bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen    if (CrosLibrary::Get()->EnsureLoaded()) {
20731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick      BrowserThread::PostTask(
21731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick          BrowserThread::FILE, FROM_HERE,
22bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen          NewRunnableFunction(&SetTouchpadSensitivity, value));
23bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen    }
24bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  }
25bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
26bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  void SetTapToClick(bool enabled) {
27bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen    if (CrosLibrary::Get()->EnsureLoaded()) {
28731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick      BrowserThread::PostTask(
29731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick          BrowserThread::FILE, FROM_HERE,
30bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen          NewRunnableFunction(&SetTouchpadTapToClick, enabled));
31bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen    }
32bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  }
33bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
34bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  DISALLOW_COPY_AND_ASSIGN(TouchpadLibraryImpl);
35bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen};
36bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
37bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenclass TouchpadLibraryStubImpl : public TouchpadLibrary {
38bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen public:
39bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  TouchpadLibraryStubImpl() {}
40bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  virtual ~TouchpadLibraryStubImpl() {}
41bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  void SetSensitivity(int value) {}
42bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  void SetTapToClick(bool enabled) {}
43bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
44bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen private:
45bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  DISALLOW_COPY_AND_ASSIGN(TouchpadLibraryStubImpl);
46bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen};
47bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
48bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// static
49bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenTouchpadLibrary* TouchpadLibrary::GetImpl(bool stub) {
50bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  if (stub)
51bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen    return new TouchpadLibraryStubImpl();
52bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  else
53bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen    return new TouchpadLibraryImpl();
54bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}
55bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
56bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}  // namespace chromeos
57