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.
5 #ifndef CONTENT_CHILD_NPAPI_URL_FETCHER_H_
6 #define CONTENT_CHILD_NPAPI_URL_FETCHER_H_
10 #include "base/memory/scoped_ptr.h"
11 #include "content/public/child/request_peer.h"
14 namespace webkit_glue {
15 class MultipartResponseDelegate;
16 class ResourceLoaderBridge;
20 class PluginStreamUrl;
22 // Fetches URLS for a plugin using ResourceDispatcher.
23 class PluginURLFetcher : public RequestPeer {
25 PluginURLFetcher(PluginStreamUrl* plugin_stream,
27 const GURL& first_party_for_cookies,
28 const std::string& method,
32 const std::string& range,
33 bool notify_redirects,
34 bool is_plugin_src_load,
38 unsigned long resource_id,
39 bool copy_stream_data);
40 virtual ~PluginURLFetcher();
42 // Cancels the current request.
45 // Called with the plugin's reply to NPP_URLRedirectNotify.
46 void URLRedirectResponse(bool allow);
48 GURL first_party_for_cookies() { return first_party_for_cookies_; }
49 GURL referrer() { return referrer_; }
50 int origin_pid() { return origin_pid_; }
51 int render_frame_id() { return render_frame_id_; }
52 int render_view_id() { return render_view_id_; }
53 bool copy_stream_data() { return copy_stream_data_; }
54 bool pending_failure_notification() { return pending_failure_notification_; }
57 // RequestPeer implementation:
58 virtual void OnUploadProgress(uint64 position, uint64 size) OVERRIDE;
59 virtual bool OnReceivedRedirect(const GURL& new_url,
60 const GURL& new_first_party_for_cookies,
61 const ResourceResponseInfo& info) OVERRIDE;
62 virtual void OnReceivedResponse(const ResourceResponseInfo& info) OVERRIDE;
63 virtual void OnDownloadedData(int len, int encoded_data_length) OVERRIDE;
64 virtual void OnReceivedData(const char* data,
66 int encoded_data_length) OVERRIDE;
67 virtual void OnCompletedRequest(int error_code,
68 bool was_ignored_by_handler,
69 bool stale_copy_in_cache,
70 const std::string& security_info,
71 const base::TimeTicks& completion_time,
72 int64 total_transfer_size) OVERRIDE;
74 // |plugin_stream_| becomes NULL after Cancel() to ensure no further calls
76 PluginStreamUrl* plugin_stream_;
78 GURL first_party_for_cookies_;
81 bool notify_redirects_;
82 bool is_plugin_src_load_;
86 unsigned long resource_id_;
87 bool copy_stream_data_;
89 bool pending_failure_notification_;
91 scoped_ptr<webkit_glue::MultipartResponseDelegate> multipart_delegate_;
93 scoped_ptr<webkit_glue::ResourceLoaderBridge> bridge_;
95 DISALLOW_COPY_AND_ASSIGN(PluginURLFetcher);
98 } // namespace content
100 #endif // CONTENT_CHILD_NPAPI_URL_FETCHER_H_