Chromium Code Reviews| Index: webkit/media/android/media_info_loader_android.h |
| diff --git a/webkit/media/android/media_info_loader_android.h b/webkit/media/android/media_info_loader_android.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..2f2e2dd44f71dab1a417ba59c6a6f3238d785554 |
| --- /dev/null |
| +++ b/webkit/media/android/media_info_loader_android.h |
| @@ -0,0 +1,120 @@ |
| +// Copyright (c) 2013 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 WEBKIT_MEDIA_ANDROID_MEDIA_INFO_LOADER_ANDROID_H_ |
| +#define WEBKIT_MEDIA_ANDROID_MEDIA_INFO_LOADER_ANDROID_H_ |
| + |
| +#include <string> |
| + |
| +#include "base/callback.h" |
| +#include "base/memory/scoped_ptr.h" |
| +#include "googleurl/src/gurl.h" |
| +#include "third_party/WebKit/Source/Platform/chromium/public/WebURLLoaderClient.h" |
| +#include "third_party/WebKit/Source/WebKit/chromium/public/WebMediaPlayer.h" |
| +#include "webkit/media/active_loader.h" |
| + |
| +namespace WebKit { |
| +class WebFrame; |
| +class WebURLLoader; |
| +class WebURLRequest; |
| +} |
| + |
| +namespace webkit_media { |
| + |
| +// This class provides additional information about a media URL. Currently it |
| +// can be used to determine if a media URL has a single security origin and |
| +// whether the URL passes a CORS access check. |
| +class MediaInfoLoaderAndroid : private WebKit::WebURLLoaderClient { |
| + public: |
| + // Status codes for start operations on MediaInfoLoaderAndroid. |
| + enum Status { |
| + // The operation failed, which may have been due to: |
| + // - Page navigation |
| + // - Server replied 4xx/5xx |
| + // - The response was invalid |
| + // - Connection was terminated |
| + // |
| + // At this point you should delete the loader. |
| + kFailed, |
| + |
| + // Everything went as planned. |
| + kOk, |
| + }; |
| + |
| + // Start loading information about the given media URL. |
| + // |url| - URL for the media resource to be loaded. |
| + // |cors_mode| - HTML media element's crossorigin attribute. |
| + // |ready_cb| - Called when media info has finished or failed loading. |
| + typedef base::Callback<void(Status)> ReadyCB; |
| + MediaInfoLoaderAndroid( |
| + const GURL& url, |
| + WebKit::WebMediaPlayer::CORSMode cors_mode, |
| + const ReadyCB& ready_cb); |
| + virtual ~MediaInfoLoaderAndroid(); |
|
qinmin
2013/06/03 16:55:59
does this needs to be virtual?
Sami
2013/06/03 17:12:56
It's virtual because the base class (WebURLLoaderC
|
| + |
| + // Start loading media info. |
| + void Start(WebKit::WebFrame* frame); |
| + |
| + // Returns true if the media resource has a single origin, false otherwise. |
| + // Only valid to call after the loader becomes ready. |
| + bool HasSingleOrigin() const; |
| + |
| + // Returns true if the media resource passed a CORS access control check. |
| + // Only valid to call after the loader becomes ready. |
| + bool DidPassCORSAccessCheck() const; |
| + |
| + private: |
| + friend class MediaInfoLoaderAndroidTest; |
| + |
| + // WebKit::WebURLLoaderClient implementation. |
| + virtual void willSendRequest( |
| + WebKit::WebURLLoader* loader, |
| + WebKit::WebURLRequest& newRequest, |
| + const WebKit::WebURLResponse& redirectResponse); |
| + virtual void didSendData( |
| + WebKit::WebURLLoader* loader, |
| + unsigned long long bytesSent, |
| + unsigned long long totalBytesToBeSent); |
| + virtual void didReceiveResponse( |
| + WebKit::WebURLLoader* loader, |
| + const WebKit::WebURLResponse& response); |
| + virtual void didDownloadData( |
| + WebKit::WebURLLoader* loader, |
| + int data_length); |
| + virtual void didReceiveData( |
| + WebKit::WebURLLoader* loader, |
| + const char* data, |
| + int data_length, |
| + int encoded_data_length); |
| + virtual void didReceiveCachedMetadata( |
| + WebKit::WebURLLoader* loader, |
| + const char* data, int dataLength); |
| + virtual void didFinishLoading( |
| + WebKit::WebURLLoader* loader, |
| + double finishTime); |
| + virtual void didFail( |
| + WebKit::WebURLLoader* loader, |
| + const WebKit::WebURLError&); |
| + |
| + void DidBecomeReady(Status status); |
| + |
| + // Injected WebURLLoader instance for testing purposes. |
| + scoped_ptr<WebKit::WebURLLoader> test_loader_; |
| + |
| + // Keeps track of an active WebURLLoader and associated state. |
| + scoped_ptr<ActiveLoader> active_loader_; |
| + |
| + bool loader_failed_; |
| + GURL url_; |
| + WebKit::WebMediaPlayer::CORSMode cors_mode_; |
| + bool single_origin_; |
| + |
| + ReadyCB ready_cb_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(MediaInfoLoaderAndroid); |
| +}; |
| + |
| +} // namespace webkit_media |
| + |
| +#endif // WEBKIT_MEDIA_ANDROID_MEDIA_INFO_LOADER_ANDROID_H_ |