1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef CONTENT_CHILD_NPAPI_URL_FETCHER_H_ 6 #define CONTENT_CHILD_NPAPI_URL_FETCHER_H_ 7 8 #include <string> 9 10 #include "base/memory/scoped_ptr.h" 11 #include "content/public/child/request_peer.h" 12 #include "url/gurl.h" 13 14 namespace webkit_glue { 15 class MultipartResponseDelegate; 16 class ResourceLoaderBridge; 17 } 18 19 namespace content { 20 class PluginStreamUrl; 21 22 // Fetches URLS for a plugin using ResourceDispatcher. 23 class PluginURLFetcher : public RequestPeer { 24 public: 25 PluginURLFetcher(PluginStreamUrl* plugin_stream, 26 const GURL& url, 27 const GURL& first_party_for_cookies, 28 const std::string& method, 29 const char* buf, 30 unsigned int len, 31 const GURL& referrer, 32 const std::string& range, 33 bool notify_redirects, 34 bool is_plugin_src_load, 35 int origin_pid, 36 int render_frame_id, 37 int render_view_id, 38 unsigned long resource_id, 39 bool copy_stream_data); 40 virtual ~PluginURLFetcher(); 41 42 // Cancels the current request. 43 void Cancel(); 44 45 // Called with the plugin's reply to NPP_URLRedirectNotify. 46 void URLRedirectResponse(bool allow); 47 first_party_for_cookies()48 GURL first_party_for_cookies() { return first_party_for_cookies_; } referrer()49 GURL referrer() { return referrer_; } origin_pid()50 int origin_pid() { return origin_pid_; } render_frame_id()51 int render_frame_id() { return render_frame_id_; } render_view_id()52 int render_view_id() { return render_view_id_; } copy_stream_data()53 bool copy_stream_data() { return copy_stream_data_; } pending_failure_notification()54 bool pending_failure_notification() { return pending_failure_notification_; } 55 56 private: 57 // RequestPeer implementation: 58 virtual void OnUploadProgress(uint64 position, uint64 size) OVERRIDE; 59 virtual bool OnReceivedRedirect(const GURL& new_url, 60 const GURL& new_first_party_for_cookies, 61 const ResourceResponseInfo& info) OVERRIDE; 62 virtual void OnReceivedResponse(const ResourceResponseInfo& info) OVERRIDE; 63 virtual void OnDownloadedData(int len, int encoded_data_length) OVERRIDE; 64 virtual void OnReceivedData(const char* data, 65 int data_length, 66 int encoded_data_length) OVERRIDE; 67 virtual void OnCompletedRequest(int error_code, 68 bool was_ignored_by_handler, 69 bool stale_copy_in_cache, 70 const std::string& security_info, 71 const base::TimeTicks& completion_time, 72 int64 total_transfer_size) OVERRIDE; 73 74 // |plugin_stream_| becomes NULL after Cancel() to ensure no further calls 75 // |reach it. 76 PluginStreamUrl* plugin_stream_; 77 GURL url_; 78 GURL first_party_for_cookies_; 79 std::string method_; 80 GURL referrer_; 81 bool notify_redirects_; 82 bool is_plugin_src_load_; 83 int origin_pid_; 84 int render_frame_id_; 85 int render_view_id_; 86 unsigned long resource_id_; 87 bool copy_stream_data_; 88 int64 data_offset_; 89 bool pending_failure_notification_; 90 91 scoped_ptr<webkit_glue::MultipartResponseDelegate> multipart_delegate_; 92 93 scoped_ptr<webkit_glue::ResourceLoaderBridge> bridge_; 94 95 DISALLOW_COPY_AND_ASSIGN(PluginURLFetcher); 96 }; 97 98 } // namespace content 99 100 #endif // CONTENT_CHILD_NPAPI_URL_FETCHER_H_ 101