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 content { 15 class MultipartResponseDelegate; 16 class PluginStreamUrl; 17 class ResourceLoaderBridge; 18 19 // Fetches URLS for a plugin using ResourceDispatcher. 20 class PluginURLFetcher : public RequestPeer { 21 public: 22 PluginURLFetcher(PluginStreamUrl* plugin_stream, 23 const GURL& url, 24 const GURL& first_party_for_cookies, 25 const std::string& method, 26 const char* buf, 27 unsigned int len, 28 const GURL& referrer, 29 const std::string& range, 30 bool notify_redirects, 31 bool is_plugin_src_load, 32 int origin_pid, 33 int render_frame_id, 34 int render_view_id, 35 unsigned long resource_id, 36 bool copy_stream_data); 37 virtual ~PluginURLFetcher(); 38 39 // Cancels the current request. 40 void Cancel(); 41 42 // Called with the plugin's reply to NPP_URLRedirectNotify. 43 void URLRedirectResponse(bool allow); 44 first_party_for_cookies()45 GURL first_party_for_cookies() { return first_party_for_cookies_; } referrer()46 GURL referrer() { return referrer_; } origin_pid()47 int origin_pid() { return origin_pid_; } render_frame_id()48 int render_frame_id() { return render_frame_id_; } render_view_id()49 int render_view_id() { return render_view_id_; } copy_stream_data()50 bool copy_stream_data() { return copy_stream_data_; } pending_failure_notification()51 bool pending_failure_notification() { return pending_failure_notification_; } 52 53 private: 54 // RequestPeer implementation: 55 virtual void OnUploadProgress(uint64 position, uint64 size) OVERRIDE; 56 virtual bool OnReceivedRedirect(const net::RedirectInfo& redirect_info, 57 const ResourceResponseInfo& info) OVERRIDE; 58 virtual void OnReceivedResponse(const ResourceResponseInfo& info) OVERRIDE; 59 virtual void OnDownloadedData(int len, int encoded_data_length) OVERRIDE; 60 virtual void OnReceivedData(const char* data, 61 int data_length, 62 int encoded_data_length) OVERRIDE; 63 virtual void OnCompletedRequest(int error_code, 64 bool was_ignored_by_handler, 65 bool stale_copy_in_cache, 66 const std::string& security_info, 67 const base::TimeTicks& completion_time, 68 int64 total_transfer_size) OVERRIDE; 69 70 // |plugin_stream_| becomes NULL after Cancel() to ensure no further calls 71 // |reach it. 72 PluginStreamUrl* plugin_stream_; 73 GURL url_; 74 GURL first_party_for_cookies_; 75 GURL referrer_; 76 bool notify_redirects_; 77 bool is_plugin_src_load_; 78 int origin_pid_; 79 int render_frame_id_; 80 int render_view_id_; 81 unsigned long resource_id_; 82 bool copy_stream_data_; 83 int64 data_offset_; 84 bool pending_failure_notification_; 85 86 scoped_ptr<MultipartResponseDelegate> multipart_delegate_; 87 88 scoped_ptr<ResourceLoaderBridge> bridge_; 89 90 DISALLOW_COPY_AND_ASSIGN(PluginURLFetcher); 91 }; 92 93 } // namespace content 94 95 #endif // CONTENT_CHILD_NPAPI_URL_FETCHER_H_ 96