// 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 CONTENT_CHILD_NPAPI_URL_FETCHER_H_ #define CONTENT_CHILD_NPAPI_URL_FETCHER_H_ #include <string> #include "base/memory/scoped_ptr.h" #include "content/public/child/request_peer.h" #include "url/gurl.h" namespace content { class MultipartResponseDelegate; class PluginStreamUrl; class ResourceLoaderBridge; // Fetches URLS for a plugin using ResourceDispatcher. class PluginURLFetcher : public RequestPeer { public: PluginURLFetcher(PluginStreamUrl* plugin_stream, const GURL& url, const GURL& first_party_for_cookies, const std::string& method, const char* buf, unsigned int len, const GURL& referrer, const std::string& range, bool notify_redirects, bool is_plugin_src_load, int origin_pid, int render_frame_id, int render_view_id, unsigned long resource_id, bool copy_stream_data); virtual ~PluginURLFetcher(); // Cancels the current request. void Cancel(); // Called with the plugin's reply to NPP_URLRedirectNotify. void URLRedirectResponse(bool allow); GURL first_party_for_cookies() { return first_party_for_cookies_; } GURL referrer() { return referrer_; } int origin_pid() { return origin_pid_; } int render_frame_id() { return render_frame_id_; } int render_view_id() { return render_view_id_; } bool copy_stream_data() { return copy_stream_data_; } bool pending_failure_notification() { return pending_failure_notification_; } private: // RequestPeer implementation: virtual void OnUploadProgress(uint64 position, uint64 size) OVERRIDE; virtual bool OnReceivedRedirect(const net::RedirectInfo& redirect_info, const ResourceResponseInfo& info) OVERRIDE; virtual void OnReceivedResponse(const ResourceResponseInfo& info) OVERRIDE; virtual void OnDownloadedData(int len, int encoded_data_length) OVERRIDE; virtual void OnReceivedData(const char* data, int data_length, int encoded_data_length) OVERRIDE; virtual void OnCompletedRequest(int error_code, bool was_ignored_by_handler, bool stale_copy_in_cache, const std::string& security_info, const base::TimeTicks& completion_time, int64 total_transfer_size) OVERRIDE; // |plugin_stream_| becomes NULL after Cancel() to ensure no further calls // |reach it. PluginStreamUrl* plugin_stream_; GURL url_; GURL first_party_for_cookies_; GURL referrer_; bool notify_redirects_; bool is_plugin_src_load_; int origin_pid_; int render_frame_id_; int render_view_id_; unsigned long resource_id_; bool copy_stream_data_; int64 data_offset_; bool pending_failure_notification_; scoped_ptr<MultipartResponseDelegate> multipart_delegate_; scoped_ptr<ResourceLoaderBridge> bridge_; DISALLOW_COPY_AND_ASSIGN(PluginURLFetcher); }; } // namespace content #endif // CONTENT_CHILD_NPAPI_URL_FETCHER_H_