plugin_url_fetcher.h revision 5d1f7b1de12d16ceb2c938c56701a3e8bfa558f7
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 "url/gurl.h" 12#include "webkit/child/resource_loader_bridge.h" 13 14namespace webkit_glue { 15class MultipartResponseDelegate; 16class ResourceLoaderBridge; 17} 18 19namespace content { 20class PluginStreamUrl; 21 22// Fetches URLS for a plugin using ResourceDispatcher. 23class PluginURLFetcher : public webkit_glue::ResourceLoaderBridge::Peer { 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 bool notify_redirects, 33 bool is_plugin_src_load, 34 int origin_pid, 35 int render_frame_id, 36 int render_view_id, 37 unsigned long resource_id, 38 bool copy_stream_data); 39 virtual ~PluginURLFetcher(); 40 41 // Cancels the current request. 42 void Cancel(); 43 44 // Called with the plugin's reply to NPP_URLRedirectNotify. 45 void URLRedirectResponse(bool allow); 46 47 bool pending_failure_notification() { return pending_failure_notification_; } 48 49 private: 50 // webkit_glue::ResourceLoaderBridge::Peer implementation: 51 virtual void OnUploadProgress(uint64 position, uint64 size) OVERRIDE; 52 virtual bool OnReceivedRedirect(const GURL& new_url, 53 const webkit_glue::ResourceResponseInfo& info, 54 bool* has_new_first_party_for_cookies, 55 GURL* new_first_party_for_cookies) OVERRIDE; 56 virtual void OnReceivedResponse( 57 const webkit_glue::ResourceResponseInfo& info) OVERRIDE; 58 virtual void OnDownloadedData(int len, int encoded_data_length) OVERRIDE; 59 virtual void OnReceivedData(const char* data, 60 int data_length, 61 int encoded_data_length) OVERRIDE; 62 virtual void OnCompletedRequest( 63 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 PluginStreamUrl* plugin_stream_; 71 GURL url_; 72 GURL first_party_for_cookies_; 73 std::string method_; 74 GURL referrer_; 75 bool notify_redirects_; 76 bool is_plugin_src_load_; 77 unsigned long resource_id_; 78 bool copy_stream_data_; 79 int64 data_offset_; 80 bool pending_failure_notification_; 81 82 scoped_ptr<webkit_glue::MultipartResponseDelegate> multipart_delegate_; 83 84 scoped_ptr<webkit_glue::ResourceLoaderBridge> bridge_; 85 86 DISALLOW_COPY_AND_ASSIGN(PluginURLFetcher); 87}; 88 89} // namespace content 90 91#endif // CONTENT_CHILD_NPAPI_URL_FETCHER_H_ 92