// Copyright 2014 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. #ifndef NET_BASE_SDCH_OBSERVER_H_ #define NET_BASE_SDCH_OBSERVER_H_ #include #include #include "net/base/net_export.h" class GURL; namespace net { class SdchManager; // Observer interface for SDCH. Observers can register with // the SdchManager to receive notifications of various SDCH events. class NET_EXPORT SdchObserver { public: virtual ~SdchObserver(); // A dictionary has been added to the observed manager. virtual void OnDictionaryAdded(const GURL& dictionary_url, const std::string& server_hash) = 0; // A dictionary has been removed from the observed manager. Note that this is // not called when dictionaries are cleared, so observers that want to track // the loaded dictionary set need to observe OnClearDictionaries as well. virtual void OnDictionaryRemoved(const std::string& server_hash) = 0; // TODO(rdsmith): Add signal that an Avail-Dictionary header was generated. // Should be added if/when an observer wants to use it to fine-tune // dictionary deprecation (e.g. if Avail-Dictionary is generated and // the remote *doesn't* use it, that should deprecate the dictionary faster) // A SDCH encoded response was received and the specified dictionary // was used to decode it. This notification only occurs for successful // decodes. Note that this notification may occur for dictionaries that // have been deleted from the SdchManager, since DictionarySets retain // references to deleted dictionaries. Observers must handle this case. // TODO(rdsmith): Should this notification indicate how much // compression the dictionary provided? virtual void OnDictionaryUsed(const std::string& server_hash) = 0; // A "Get-Dictionary" header has been seen. virtual void OnGetDictionary(const GURL& request_url, const GURL& dictionary_url) = 0; // Notification that SDCH has received a request to clear all // its dictionaries. virtual void OnClearDictionaries() = 0; }; } // namespace net #endif // NET_BASE_SDCH_MANAGER_H_