Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / content / child / npapi / plugin_url_fetcher.h
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 "content/public/child/request_peer.h"
12 #include "url/gurl.h"
13
14 namespace content {
15 class MultipartResponseDelegate;
16 class PluginStreamUrl;
17 class ResourceLoaderBridge;
18
19 // Fetches URLS for a plugin using ResourceDispatcher.
20 class PluginURLFetcher : public RequestPeer {
21  public:
22   PluginURLFetcher(PluginStreamUrl* plugin_stream,
23                    const GURL& url,
24                    const GURL& first_party_for_cookies,
25                    const std::string& method,
26                    const char* buf,
27                    unsigned int len,
28                    const GURL& referrer,
29                    const std::string& range,
30                    bool notify_redirects,
31                    bool is_plugin_src_load,
32                    int origin_pid,
33                    int render_frame_id,
34                    int render_view_id,
35                    unsigned long resource_id,
36                    bool copy_stream_data);
37   virtual ~PluginURLFetcher();
38
39   // Cancels the current request.
40   void Cancel();
41
42   // Called with the plugin's reply to NPP_URLRedirectNotify.
43   void URLRedirectResponse(bool allow);
44
45   GURL first_party_for_cookies() { return first_party_for_cookies_; }
46   GURL referrer() { return referrer_; }
47   int origin_pid() { return origin_pid_; }
48   int render_frame_id() { return render_frame_id_; }
49   int render_view_id() { return render_view_id_; }
50   bool copy_stream_data() { return copy_stream_data_; }
51   bool pending_failure_notification() { return pending_failure_notification_; }
52
53  private:
54   // RequestPeer implementation:
55   virtual void OnUploadProgress(uint64 position, uint64 size) OVERRIDE;
56   virtual bool OnReceivedRedirect(const net::RedirectInfo& redirect_info,
57                                   const ResourceResponseInfo& info) OVERRIDE;
58   virtual void OnReceivedResponse(const ResourceResponseInfo& info) OVERRIDE;
59   virtual void OnDownloadedData(int len, int encoded_data_length) OVERRIDE;
60   virtual void OnReceivedData(const char* data,
61                               int data_length,
62                               int encoded_data_length) OVERRIDE;
63   virtual void OnCompletedRequest(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   // |plugin_stream_| becomes NULL after Cancel() to ensure no further calls
71   // |reach it.
72   PluginStreamUrl* plugin_stream_;
73   GURL url_;
74   GURL first_party_for_cookies_;
75   GURL referrer_;
76   bool notify_redirects_;
77   bool is_plugin_src_load_;
78   int origin_pid_;
79   int render_frame_id_;
80   int render_view_id_;
81   unsigned long resource_id_;
82   bool copy_stream_data_;
83   int64 data_offset_;
84   bool pending_failure_notification_;
85
86   scoped_ptr<MultipartResponseDelegate> multipart_delegate_;
87
88   scoped_ptr<ResourceLoaderBridge> bridge_;
89
90   DISALLOW_COPY_AND_ASSIGN(PluginURLFetcher);
91 };
92
93 }  // namespace content
94
95 #endif  // CONTENT_CHILD_NPAPI_URL_FETCHER_H_