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, 60cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) const GURL& new_first_party_for_cookies, 61cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) const ResourceResponseInfo& info) OVERRIDE; 62cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual void OnReceivedResponse(const ResourceResponseInfo& info) OVERRIDE; 6358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) virtual void OnDownloadedData(int len, int encoded_data_length) OVERRIDE; 6458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) virtual void OnReceivedData(const char* data, 6558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) int data_length, 6658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) int encoded_data_length) OVERRIDE; 67c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void OnCompletedRequest(int error_code, 68c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch bool was_ignored_by_handler, 69c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch bool stale_copy_in_cache, 70c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch const std::string& security_info, 71c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch const base::TimeTicks& completion_time, 72c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch int64 total_transfer_size) OVERRIDE; 73c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 74c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch // |plugin_stream_| becomes NULL after Cancel() to ensure no further calls 75c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch // |reach it. 7658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) PluginStreamUrl* plugin_stream_; 7758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) GURL url_; 7858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) GURL first_party_for_cookies_; 7958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) std::string method_; 8058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) GURL referrer_; 8158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) bool notify_redirects_; 8258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) bool is_plugin_src_load_; 83e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch int origin_pid_; 84e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch int render_frame_id_; 85e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch int render_view_id_; 8658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) unsigned long resource_id_; 875d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) bool copy_stream_data_; 88d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) int64 data_offset_; 894e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) bool pending_failure_notification_; 90d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) 91d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) scoped_ptr<webkit_glue::MultipartResponseDelegate> multipart_delegate_; 9258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 9358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) scoped_ptr<webkit_glue::ResourceLoaderBridge> bridge_; 9458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 9558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(PluginURLFetcher); 9658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)}; 9758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 9858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} // namespace content 9958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 10058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#endif // CONTENT_CHILD_NPAPI_URL_FETCHER_H_ 101