plugin_url_fetcher.h revision c5cede9ae108bb15f6b7a8aea21c7e1fefa2834c
158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved. 258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// found in the LICENSE file. 458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#ifndef CONTENT_CHILD_NPAPI_URL_FETCHER_H_ 658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#define CONTENT_CHILD_NPAPI_URL_FETCHER_H_ 758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include <string> 958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 1058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "base/memory/scoped_ptr.h" 11c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#include "content/public/child/request_peer.h" 1258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "url/gurl.h" 1358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 1458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)namespace webkit_glue { 15d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)class MultipartResponseDelegate; 1658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)class ResourceLoaderBridge; 1758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} 1858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 1958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)namespace content { 2058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)class PluginStreamUrl; 2158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 2258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// Fetches URLS for a plugin using ResourceDispatcher. 23c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochclass PluginURLFetcher : public RequestPeer { 2458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) public: 2558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) PluginURLFetcher(PluginStreamUrl* plugin_stream, 2658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) const GURL& url, 2758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) const GURL& first_party_for_cookies, 2858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) const std::string& method, 29d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) const char* buf, 30d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) unsigned int len, 3158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) const GURL& referrer, 32e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch const std::string& range, 3358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) bool notify_redirects, 3458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) bool is_plugin_src_load, 3558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) int origin_pid, 365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) int render_frame_id, 3758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) int render_view_id, 385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) unsigned long resource_id, 395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) bool copy_stream_data); 4058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) virtual ~PluginURLFetcher(); 4158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 4258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) // Cancels the current request. 4358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) void Cancel(); 4458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 4558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) // Called with the plugin's reply to NPP_URLRedirectNotify. 4658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) void URLRedirectResponse(bool allow); 4758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 48e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch GURL first_party_for_cookies() { return first_party_for_cookies_; } 49e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch GURL referrer() { return referrer_; } 50e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch int origin_pid() { return origin_pid_; } 51e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch int render_frame_id() { return render_frame_id_; } 52e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch int render_view_id() { return render_view_id_; } 53e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch bool copy_stream_data() { return copy_stream_data_; } 544e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) bool pending_failure_notification() { return pending_failure_notification_; } 554e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 5658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) private: 57c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch // RequestPeer implementation: 5858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) virtual void OnUploadProgress(uint64 position, uint64 size) OVERRIDE; 5958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) virtual bool OnReceivedRedirect(const GURL& new_url, 6058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) const webkit_glue::ResourceResponseInfo& info, 6158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) bool* has_new_first_party_for_cookies, 6258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) GURL* new_first_party_for_cookies) OVERRIDE; 6358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) virtual void OnReceivedResponse( 6458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) const webkit_glue::ResourceResponseInfo& info) OVERRIDE; 6558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) virtual void OnDownloadedData(int len, int encoded_data_length) OVERRIDE; 6658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) virtual void OnReceivedData(const char* data, 6758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) int data_length, 6858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) int encoded_data_length) OVERRIDE; 69c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void OnCompletedRequest(int error_code, 70c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch bool was_ignored_by_handler, 71c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch bool stale_copy_in_cache, 72c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch const std::string& security_info, 73c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch const base::TimeTicks& completion_time, 74c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch int64 total_transfer_size) OVERRIDE; 75c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 76c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch // |plugin_stream_| becomes NULL after Cancel() to ensure no further calls 77c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch // |reach it. 7858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) PluginStreamUrl* plugin_stream_; 7958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) GURL url_; 8058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) GURL first_party_for_cookies_; 8158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) std::string method_; 8258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) GURL referrer_; 8358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) bool notify_redirects_; 8458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) bool is_plugin_src_load_; 85e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch int origin_pid_; 86e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch int render_frame_id_; 87e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch int render_view_id_; 8858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) unsigned long resource_id_; 895d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) bool copy_stream_data_; 90d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) int64 data_offset_; 914e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) bool pending_failure_notification_; 92d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) 93d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) scoped_ptr<webkit_glue::MultipartResponseDelegate> multipart_delegate_; 9458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 9558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) scoped_ptr<webkit_glue::ResourceLoaderBridge> bridge_; 9658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 9758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(PluginURLFetcher); 9858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)}; 9958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 10058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} // namespace content 10158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 10258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#endif // CONTENT_CHILD_NPAPI_URL_FETCHER_H_ 103