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