Home | History | Annotate | Download | only in sync_notifier
      1 // Copyright (c) 2012 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_NOTIFICATIONS_SYNC_NOTIFIER_CHROME_NOTIFIER_SERVICE_H_
      6 #define CHROME_BROWSER_NOTIFICATIONS_SYNC_NOTIFIER_CHROME_NOTIFIER_SERVICE_H_
      7 
      8 #include "base/memory/weak_ptr.h"
      9 #include "components/keyed_service/core/keyed_service.h"
     10 
     11 class Profile;
     12 class SyncedNotificationsShim;
     13 
     14 namespace extensions {
     15 struct Event;
     16 }
     17 
     18 namespace notifier {
     19 
     20 // The ChromeNotifierService acts as the bridge between sync and the JS
     21 // extension that implements the synced notifications processing code.
     22 // TODO(zea): consider making this a generic bridge for extension backed
     23 // datatypes.
     24 class ChromeNotifierService : public KeyedService {
     25  public:
     26   explicit ChromeNotifierService(Profile* profile);
     27   virtual ~ChromeNotifierService();
     28 
     29   // KeyedService implementation.
     30   virtual void Shutdown() OVERRIDE;
     31 
     32   // Returns the SyncableService for syncer::SYNCED_NOTIFICATIONS and
     33   // syncer::SYNCED_NOTIFICATION_APP_INFO
     34   SyncedNotificationsShim* GetSyncedNotificationsShim();
     35 
     36  private:
     37   // Helper method for firing JS events triggered by sync.
     38   void FireSyncJSEvent(scoped_ptr<extensions::Event> event);
     39 
     40   // Helper method for trigger synced notification refreshes.
     41   void NotifyRefreshNeeded();
     42 
     43   // The owning profile.
     44   Profile* const profile_;
     45 
     46   // Shim connecting the JS private api to sync. // TODO(zea): delete all other
     47   // code.
     48   scoped_ptr<SyncedNotificationsShim> synced_notifications_shim_;
     49 
     50   base::WeakPtrFactory<ChromeNotifierService> weak_ptr_factory_;
     51 
     52   DISALLOW_COPY_AND_ASSIGN(ChromeNotifierService);
     53 };
     54 
     55 }  // namespace notifier
     56 
     57 #endif  // CHROME_BROWSER_NOTIFICATIONS_SYNC_NOTIFIER_CHROME_NOTIFIER_SERVICE_H_
     58