summaryrefslogtreecommitdiffstats
path: root/webkit/glue/plugins/pepper_url_request_info.h
diff options
context:
space:
mode:
Diffstat (limited to 'webkit/glue/plugins/pepper_url_request_info.h')
-rw-r--r--webkit/glue/plugins/pepper_url_request_info.h83
1 files changed, 83 insertions, 0 deletions
diff --git a/webkit/glue/plugins/pepper_url_request_info.h b/webkit/glue/plugins/pepper_url_request_info.h
new file mode 100644
index 0000000..ef1452c
--- /dev/null
+++ b/webkit/glue/plugins/pepper_url_request_info.h
@@ -0,0 +1,83 @@
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef WEBKIT_GLUE_PLUGINS_PEPPER_URL_REQUEST_INFO_H_
+#define WEBKIT_GLUE_PLUGINS_PEPPER_URL_REQUEST_INFO_H_
+
+#include <string>
+#include <vector>
+
+#include "base/ref_counted.h"
+#include "third_party/ppapi/c/ppb_url_request_info.h"
+#include "webkit/glue/plugins/pepper_file_ref.h"
+#include "webkit/glue/plugins/pepper_resource.h"
+
+namespace WebKit {
+class WebFrame;
+class WebURLRequest;
+}
+
+namespace pepper {
+
+class URLRequestInfo : public Resource {
+ public:
+ explicit URLRequestInfo(PluginModule* module);
+ virtual ~URLRequestInfo();
+
+ // Returns a pointer to the interface implementing PPB_URLRequestInfo that is
+ // exposed to the plugin.
+ static const PPB_URLRequestInfo* GetInterface();
+
+ // Resource overrides.
+ URLRequestInfo* AsURLRequestInfo() { return this; }
+
+ // PPB_URLRequestInfo implementation.
+ bool SetBooleanProperty(PP_URLRequestProperty property, bool value);
+ bool SetStringProperty(PP_URLRequestProperty property,
+ const std::string& value);
+ bool AppendDataToBody(const std::string& data);
+ bool AppendFileToBody(FileRef* file_ref,
+ int64_t start_offset,
+ int64_t number_of_bytes,
+ PP_Time expected_last_modified_time);
+
+ WebKit::WebURLRequest ToWebURLRequest(WebKit::WebFrame* frame) const;
+
+ private:
+ struct BodyItem {
+ BodyItem(const std::string& data)
+ : data(data),
+ start_offset(0),
+ number_of_bytes(-1),
+ expected_last_modified_time(0.0) {
+ }
+
+ BodyItem(FileRef* file_ref,
+ int64_t start_offset,
+ int64_t number_of_bytes,
+ PP_Time expected_last_modified_time)
+ : file_ref(file_ref),
+ start_offset(start_offset),
+ number_of_bytes(number_of_bytes),
+ expected_last_modified_time(expected_last_modified_time) {
+ }
+
+ std::string data;
+ scoped_refptr<FileRef> file_ref;
+ int64_t start_offset;
+ int64_t number_of_bytes;
+ PP_Time expected_last_modified_time;
+ };
+
+ typedef std::vector<BodyItem> Body;
+
+ std::string url_;
+ std::string method_;
+ std::string headers_;
+ Body body_;
+};
+
+} // namespace pepper
+
+#endif // WEBKIT_GLUE_PLUGINS_PEPPER_URL_REQUEST_INFO_H_