| Index: content/browser/gamepad/gamepad_service.h | 
| diff --git a/content/browser/gamepad/gamepad_service.h b/content/browser/gamepad/gamepad_service.h | 
| new file mode 100644 | 
| index 0000000000000000000000000000000000000000..2be7e3f2b44d31e4079c8a236225db8687136cb1 | 
| --- /dev/null | 
| +++ b/content/browser/gamepad/gamepad_service.h | 
| @@ -0,0 +1,73 @@ | 
| +// Copyright (c) 2011 The Chromium Authors. All rights reserved. | 
| +// Use of this source code is governed by a BSD-style license that can be | 
| +// found in the LICENSE file. | 
| + | 
| +// Owns the GamepadProvider (the background polling thread) and keeps track of | 
| +// the number of renderers currently using the data (and pausing the provider | 
| +// when not in use). | 
| + | 
| +#ifndef CONTENT_BROWSER_GAMEPAD_GAMEPAD_SERVICE_H | 
| +#define CONTENT_BROWSER_GAMEPAD_GAMEPAD_SERVICE_H | 
| + | 
| +#include "base/basictypes.h" | 
| +#include "base/memory/singleton.h" | 
| +#include "base/shared_memory.h" | 
| +#include "content/public/browser/notification_observer.h" | 
| +#include "content/public/browser/notification_registrar.h" | 
| + | 
| +namespace content { | 
| + | 
| +class GamepadDataFetcher; | 
| +class GamepadProvider; | 
| +class RenderProcessHost; | 
| + | 
| +class GamepadService : public NotificationObserver, | 
| +                       public base::RefCountedThreadSafe<GamepadService> { | 
| + public: | 
| +  // Returns the GamepadService singleton. | 
| +  static GamepadService* GetInstance(); | 
| + | 
| +  // Called on IO thread from a renderer host. Increments the number of users | 
| +  // of the provider. The Provider is running when there's > 0 users, and is | 
| +  // paused when the count drops to 0. There is no stop, the gamepad service | 
| +  // registers with the RPH to be notified when the associated renderer closes | 
| +  // (or crashes). | 
| +  void Start(GamepadDataFetcher* fetcher, | 
| +             RenderProcessHost* associated_rph); | 
| + | 
| +  base::SharedMemoryHandle GetSharedMemoryHandle(base::ProcessHandle handle); | 
| + | 
| +  // NotificationObserver overrides: | 
| +  virtual void Observe(int type, | 
| +                       const NotificationSource& source, | 
| +                       const NotificationDetails& details) OVERRIDE; | 
| + | 
| + private: | 
| +  friend struct DefaultSingletonTraits<GamepadService>; | 
| +  friend class base::RefCountedThreadSafe<GamepadService>; | 
| +  GamepadService(); | 
| +  virtual ~GamepadService(); | 
| + | 
| +  // Called when a renderer that Start'd us is closed/crashes. | 
| +  void Stop(); | 
| + | 
| +  // Run on UI thread to receive notifications of renderer closes. | 
| +  void RegisterForCloseNotification(RenderProcessHost* rph); | 
| + | 
| +  // A registrar for listening notifications. Used to listen for when an | 
| +  // associated renderer has gone away (possibly crashed). We don't trust | 
| +  // the renderers to send a stop message because of the possibility of | 
| +  // crashing. | 
| +  NotificationRegistrar registrar_; | 
| + | 
| +  int num_readers_; | 
| +  scoped_refptr<GamepadProvider> provider_; | 
| + | 
| +  static GamepadService* instance_; | 
| + | 
| +  DISALLOW_COPY_AND_ASSIGN(GamepadService); | 
| +}; | 
| + | 
| +} // namespace content | 
| + | 
| +#endif // CONTENT_BROWSER_GAMEPAD_GAMEPAD_SERVICE_H | 
|  |