Chromium Code Reviews| Index: content/public/browser/url_data_source.h |
| =================================================================== |
| --- content/public/browser/url_data_source.h (revision 176717) |
| +++ content/public/browser/url_data_source.h (working copy) |
| @@ -8,33 +8,42 @@ |
| #include <string> |
| #include "content/common/content_export.h" |
| +#include "base/callback.h" |
|
tfarina
2013/01/16 03:01:51
sort
|
| -class ChromeURLDataManager; |
| -class ChromeURLDataManagerBackend; |
| -class ChromeWebUIDataSource; |
| class MessageLoop; |
| -class URLDataSource; |
| +namespace base { |
| +class RefCountedMemory; |
| +} |
| + |
| namespace content { |
| -// An interface implemented by a creator of URLDataSource to customize its |
| -// behavior. |
| -class CONTENT_EXPORT URLDataSourceDelegate { |
| +// A URLDataSource is an object that can answer requests for data |
| +// asynchronously. An implementation of URLDataSource should handle calls to |
| +// StartDataRequest() by starting its (implementation-specific) asynchronous |
| +// request for the data, then running the callback given in that method to |
| +// notify. |
| +class CONTENT_EXPORT URLDataSource { |
| public: |
| - URLDataSourceDelegate(); |
| - virtual ~URLDataSourceDelegate(); |
| + // Used by StartDataRequest. The string parameter is the path of the request. |
| + // If the callee doesn't want to handle the data, false is returned. Otherwise |
| + // true is returned and the GotDataCallback parameter is called either then or |
| + // asynchronously with the response. |
| + typedef base::Callback<void(base::RefCountedMemory*)> GotDataCallback; |
| + virtual ~URLDataSource() {} |
| + |
| // The name of this source. |
| // E.g., for favicons, this could be "favicon", which results in paths for |
| // specific resources like "favicon/34" getting sent to this source. |
| virtual std::string GetSource() = 0; |
| // Called by URLDataSource to request data at |path|. The delegate should |
| - // call URLDataSource::SendResponse() when the data is available or if the |
| - // request could not be satisfied. |
| + // run |callback| when the data is available or if the request could not be |
| + // satisfied. |
| virtual void StartDataRequest(const std::string& path, |
| bool is_incognito, |
| - int request_id) = 0; |
| + const GotDataCallback& callback) = 0; |
| // Return the mimetype that should be sent with this response, or empty |
| // string to specify no mime type. |
| @@ -60,19 +69,6 @@ |
| // Returns true if responses from this URLDataSource can be cached. |
| virtual bool AllowCaching() const; |
| - |
| - void set_url_data_source_for_testing(URLDataSource* url_data_source) { |
| - url_data_source_ = url_data_source; |
| - } |
| - |
| - protected: |
| - URLDataSource* url_data_source() { return url_data_source_; } |
| - |
| - private: |
| - friend class ::ChromeURLDataManager; |
| - friend class ::ChromeURLDataManagerBackend; |
| - friend class ::ChromeWebUIDataSource; |
| - URLDataSource* url_data_source_; |
| }; |
| } // namespace content |