| Index: content/common/notification_service.h
|
| ===================================================================
|
| --- content/common/notification_service.h (revision 106380)
|
| +++ content/common/notification_service.h (working copy)
|
| @@ -1,132 +0,0 @@
|
| -// 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.
|
| -
|
| -// This file describes a central switchboard for notifications that might
|
| -// happen in various parts of the application, and allows users to register
|
| -// observers for various classes of events that they're interested in.
|
| -
|
| -#ifndef CONTENT_COMMON_NOTIFICATION_SERVICE_H_
|
| -#define CONTENT_COMMON_NOTIFICATION_SERVICE_H_
|
| -#pragma once
|
| -
|
| -#include <map>
|
| -
|
| -#include "base/observer_list.h"
|
| -#include "content/common/content_export.h"
|
| -#include "content/public/browser/notification_details.h"
|
| -#include "content/public/browser/notification_source.h"
|
| -
|
| -namespace content {
|
| -class NotificationObserver;
|
| -class NotificationRegistrar;
|
| -}
|
| -
|
| -class CONTENT_EXPORT NotificationService {
|
| - public:
|
| - // Returns the NotificationService object for the current thread, or NULL if
|
| - // none.
|
| - static NotificationService* current();
|
| -
|
| - // Normally instantiated when the thread is created. Not all threads have
|
| - // a NotificationService. Only one instance should be created per thread.
|
| - NotificationService();
|
| - ~NotificationService();
|
| -
|
| - // Synchronously posts a notification to all interested observers.
|
| - // Source is a reference to a NotificationSource object representing
|
| - // the object originating the notification (can be
|
| - // NotificationService::AllSources(), in which case
|
| - // only observers interested in all sources will be notified).
|
| - // Details is a reference to an object containing additional data about
|
| - // the notification. If no additional data is needed, NoDetails() is used.
|
| - // There is no particular order in which the observers will be notified.
|
| - void Notify(int type,
|
| - const content::NotificationSource& source,
|
| - const content::NotificationDetails& details);
|
| -
|
| - // Returns a NotificationSource that represents all notification sources
|
| - // (for the purpose of registering an observer for events from all sources).
|
| - static content::Source<void> AllSources() {
|
| - return content::Source<void>(NULL);
|
| - }
|
| -
|
| - // Returns the same value as AllSources(). This function has semantic
|
| - // differences to the programmer: We have checked that this AllSources()
|
| - // usage is safe in the face of multiple profiles. Objects that were
|
| - // singletons now will always have multiple instances, one per browser
|
| - // context.
|
| - //
|
| - // Some usage is safe, where the Source is checked to see if it's a member of
|
| - // a container before use. But, we want the number of AllSources() calls to
|
| - // drop to almost nothing, because most usages are not multiprofile safe and
|
| - // were done because it was easier to listen to everything.
|
| - static content::Source<void> AllBrowserContextsAndSources() {
|
| - return content::Source<void>(NULL);
|
| - }
|
| -
|
| - // Returns a NotificationDetails object that represents a lack of details
|
| - // associated with a notification. (This is effectively a null pointer.)
|
| - static content::Details<void> NoDetails() {
|
| - return content::Details<void>(NULL);
|
| - }
|
| -
|
| - private:
|
| - friend class content::NotificationRegistrar;
|
| -
|
| - typedef ObserverList<content::NotificationObserver> NotificationObserverList;
|
| - typedef std::map<uintptr_t, NotificationObserverList*> NotificationSourceMap;
|
| - typedef std::map<int, NotificationSourceMap> NotificationObserverMap;
|
| - typedef std::map<int, int> NotificationObserverCount;
|
| -
|
| - // Convenience function to determine whether a source has a
|
| - // NotificationObserverList in the given map;
|
| - static bool HasKey(const NotificationSourceMap& map,
|
| - const content::NotificationSource& source);
|
| -
|
| - // NOTE: Rather than using this directly, you should use a
|
| - // NotificationRegistrar.
|
| - //
|
| - // Registers a NotificationObserver to be called whenever a matching
|
| - // notification is posted. Observer is a pointer to an object subclassing
|
| - // NotificationObserver to be notified when an event matching the other two
|
| - // parameters is posted to this service. Type is the type of events to be
|
| - // notified about (or content::NOTIFICATION_ALL to receive events of all
|
| - // types).
|
| - // Source is a NotificationSource object (created using
|
| - // "Source<classname>(pointer)"), if this observer only wants to
|
| - // receive events from that object, or NotificationService::AllSources()
|
| - // to receive events from all sources.
|
| - //
|
| - // A given observer can be registered only once for each combination of
|
| - // type and source. If the same object is registered more than once,
|
| - // it must be removed for each of those combinations of type and source later.
|
| - //
|
| - // The caller retains ownership of the object pointed to by observer.
|
| - void AddObserver(content::NotificationObserver* observer,
|
| - int type, const content::NotificationSource& source);
|
| -
|
| - // NOTE: Rather than using this directly, you should use a
|
| - // NotificationRegistrar.
|
| - //
|
| - // Removes the object pointed to by observer from receiving notifications
|
| - // that match type and source. If no object matching the parameters is
|
| - // currently registered, this method is a no-op.
|
| - void RemoveObserver(content::NotificationObserver* observer,
|
| - int type, const content::NotificationSource& source);
|
| -
|
| - // Keeps track of the observers for each type of notification.
|
| - // Until we get a prohibitively large number of notification types,
|
| - // a simple array is probably the fastest way to dispatch.
|
| - NotificationObserverMap observers_;
|
| -
|
| -#ifndef NDEBUG
|
| - // Used to check to see that AddObserver and RemoveObserver calls are
|
| - // balanced.
|
| - NotificationObserverCount observer_counts_;
|
| -#endif
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(NotificationService);
|
| -};
|
| -
|
| -#endif // CONTENT_COMMON_NOTIFICATION_SERVICE_H_
|
|
|