chrome_notifier_service.cc revision 116680a4aac90f2aa7413d9095a592090648e557
12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// The ChromeNotifierService works together with sync to maintain the state of 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// user notifications, which can then be presented in the notification center, 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// via the Notification UI Manager. 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/notifications/sync_notifier/chrome_notifier_service.h" 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 11f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "chrome/browser/extensions/api/synced_notifications_private/synced_notifications_shim.h" 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/profiles/profile.h" 13f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "extensions/browser/event_router.h" 148bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace notifier { 16868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 17116680a4aac90f2aa7413d9095a592090648e557Ben MurdochChromeNotifierService::ChromeNotifierService(Profile* profile) 185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) : profile_(profile), 19f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) weak_ptr_factory_(this) { 20f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) synced_notifications_shim_.reset(new SyncedNotificationsShim( 21f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) base::Bind(&ChromeNotifierService::FireSyncJSEvent, 22f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) weak_ptr_factory_.GetWeakPtr()))); 23a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch} 245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 25effb81e5f8246d0db0270817048dc992db66e9fbBen MurdochChromeNotifierService::~ChromeNotifierService() { 26effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch} 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 28a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// Methods from KeyedService. 29868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)void ChromeNotifierService::Shutdown() {} 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 31f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)SyncedNotificationsShim* ChromeNotifierService::GetSyncedNotificationsShim() { 32f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) return synced_notifications_shim_.get(); 33f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)} 34f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 35f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)void ChromeNotifierService::FireSyncJSEvent( 36f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) scoped_ptr<extensions::Event> event) { 37f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) event->restrict_to_browser_context = profile_; 38f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // TODO(synced notifications): consider broadcasting to a specific extension 39f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // id. 40f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) extensions::EventRouter::Get(profile_)->BroadcastEvent(event.Pass()); 41f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)} 42f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace notifier 44