| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef MEDIA_BLINK_URL_INDEX_H_ | 5 #ifndef MEDIA_BLINK_URL_INDEX_H_ |
| 6 #define MEDIA_BLINK_URL_INDEX_H_ | 6 #define MEDIA_BLINK_URL_INDEX_H_ |
| 7 | 7 |
| 8 #include <map> | 8 #include <map> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| 11 #include "base/memory/ref_counted.h" | 11 #include "base/memory/ref_counted.h" |
| 12 #include "base/threading/thread_checker.h" | 12 #include "base/threading/thread_checker.h" |
| 13 #include "media/base/media_export.h" | |
| 14 #include "media/blink/lru.h" | 13 #include "media/blink/lru.h" |
| 14 #include "media/blink/media_blink_export.h" |
| 15 #include "url/gurl.h" | 15 #include "url/gurl.h" |
| 16 | 16 |
| 17 namespace media { | 17 namespace media { |
| 18 | 18 |
| 19 #ifndef MEDIA_BLINK_BUFFERED_RESOURCE_LOADER_H_ | |
| 20 const int64 kPositionNotSpecified = -1; | 19 const int64 kPositionNotSpecified = -1; |
| 21 #endif | |
| 22 | 20 |
| 23 class UrlIndex; | 21 class UrlIndex; |
| 24 | 22 |
| 25 class MEDIA_EXPORT UrlData : public base::RefCounted<UrlData> { | 23 class MEDIA_BLINK_EXPORT UrlData : public base::RefCounted<UrlData> { |
| 26 public: | 24 public: |
| 27 // Keep in sync with WebMediaPlayer::CORSMode. | 25 // Keep in sync with WebMediaPlayer::CORSMode. |
| 28 enum CORSMode { kUnspecified, kAnonymous, kUseCredentials }; | 26 enum CORSMode { kUnspecified, kAnonymous, kUseCredentials }; |
| 29 typedef std::pair<GURL, CORSMode> KeyType; | 27 typedef std::pair<GURL, CORSMode> KeyType; |
| 30 | 28 |
| 31 const GURL url() const { return url_; } | 29 const GURL url() const { return url_; } |
| 32 const GURL redirects_to() const { return redirects_to_; } | 30 const GURL redirects_to() const { return redirects_to_; } |
| 33 CORSMode cors_mode() const { return cors_mode_; } | 31 CORSMode cors_mode() const { return cors_mode_; } |
| 34 bool range_supported() const { return range_supported_; } | 32 bool range_supported() const { return range_supported_; } |
| 35 bool cacheable() const { return cacheable_; } | 33 bool cacheable() const { return cacheable_; } |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 93 UrlIndex* url_index_; | 91 UrlIndex* url_index_; |
| 94 DISALLOW_COPY_AND_ASSIGN(UrlData); | 92 DISALLOW_COPY_AND_ASSIGN(UrlData); |
| 95 }; | 93 }; |
| 96 | 94 |
| 97 // The UrlIndex lets you look up UrlData instances by url. | 95 // The UrlIndex lets you look up UrlData instances by url. |
| 98 // It keeps a weak reference to UrlData that it has returned. | 96 // It keeps a weak reference to UrlData that it has returned. |
| 99 // Since the multibuffer cache key contains an UrlData reference | 97 // Since the multibuffer cache key contains an UrlData reference |
| 100 // we can be sure that UrlData instances with zero references | 98 // we can be sure that UrlData instances with zero references |
| 101 // do not have any cached data associated with them, and they | 99 // do not have any cached data associated with them, and they |
| 102 // can safely be removed from the UrlIndex. | 100 // can safely be removed from the UrlIndex. |
| 103 class MEDIA_EXPORT UrlIndex { | 101 class MEDIA_BLINK_EXPORT UrlIndex { |
| 104 public: | 102 public: |
| 105 UrlIndex(); | 103 UrlIndex(); |
| 106 ~UrlIndex(); | 104 ~UrlIndex(); |
| 107 // Creates a new UrlData if not found. | 105 // Creates a new UrlData if not found. |
| 108 // |last_modified| may be null if not known. | 106 // |last_modified| may be null if not known. |
| 109 // Normally you'll want to call Use() on the returned object right away. | 107 // Normally you'll want to call Use() on the returned object right away. |
| 110 scoped_refptr<UrlData> GetByUrl(const GURL& gurl, | 108 scoped_refptr<UrlData> GetByUrl(const GURL& gurl, |
| 111 UrlData::CORSMode cors_mode); | 109 UrlData::CORSMode cors_mode); |
| 112 | 110 |
| 113 | 111 |
| 114 private: | 112 private: |
| 115 friend class UrlData; | 113 friend class UrlData; |
| 116 void RemoveUrlData(const UrlData* url_data); | 114 void RemoveUrlData(const UrlData* url_data); |
| 117 // TODO(hubbe): Add support for etag validation. | 115 // TODO(hubbe): Add support for etag validation. |
| 118 scoped_refptr<UrlData> SetLastModified(scoped_refptr<UrlData> urldata, | 116 scoped_refptr<UrlData> SetLastModified(scoped_refptr<UrlData> urldata, |
| 119 base::Time last_modified); | 117 base::Time last_modified); |
| 120 | 118 |
| 121 std::map<UrlData::KeyType, UrlData*> by_url_; | 119 std::map<UrlData::KeyType, UrlData*> by_url_; |
| 122 std::map<UrlData::KeyType, UrlData*> with_last_modified_; | 120 std::map<UrlData::KeyType, UrlData*> with_last_modified_; |
| 123 std::list<scoped_refptr<UrlData> > to_prune_; | 121 std::list<scoped_refptr<UrlData> > to_prune_; |
| 124 bool prune_cb_active_; | 122 bool prune_cb_active_; |
| 125 }; | 123 }; |
| 126 | 124 |
| 127 } // namespace media | 125 } // namespace media |
| 128 #endif // MEDIA_BLINK_URL_INDEX_H_ | 126 #endif // MEDIA_BLINK_URL_INDEX_H_ |
| OLD | NEW |