Index: ppapi/proxy/url_response_info_resource.cc |
diff --git a/ppapi/proxy/url_response_info_resource.cc b/ppapi/proxy/url_response_info_resource.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..91c999092df6bbd850a54afb9cb0d6821b37cc71 |
--- /dev/null |
+++ b/ppapi/proxy/url_response_info_resource.cc |
@@ -0,0 +1,82 @@ |
+// Copyright (c) 2012 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. |
+ |
+#include "ppapi/proxy/url_response_info_resource.h" |
+ |
+#include "ppapi/proxy/ppb_file_ref_proxy.h" |
+#include "ppapi/shared_impl/var.h" |
+#include "ppapi/thunk/enter.h" |
+#include "ppapi/thunk/resource_creation_api.h" |
+ |
+namespace ppapi { |
+namespace proxy { |
+ |
+namespace { |
+ |
+bool IsRedirect(int32_t status) { |
+ return status >= 300 && status <= 399; |
+} |
+ |
+} // namespace |
+ |
+URLResponseInfoResource::URLResponseInfoResource( |
+ Connection connection, |
+ PP_Instance instance, |
+ const URLResponseInfoData& data, |
+ PP_Resource file_ref_resource) |
+ : PluginResource(connection, instance), |
+ data_(data), |
+ body_as_file_ref_(ScopedPPResource::PassRef(), file_ref_resource) { |
+} |
+ |
+URLResponseInfoResource::~URLResponseInfoResource() { |
+} |
+ |
+thunk::PPB_URLResponseInfo_API* |
+URLResponseInfoResource::AsPPB_URLResponseInfo_API() { |
+ return this; |
+} |
+ |
+PP_Var URLResponseInfoResource::GetProperty(PP_URLResponseProperty property) { |
+ switch (property) { |
+ case PP_URLRESPONSEPROPERTY_URL: |
+ return StringVar::StringToPPVar(data_.url); |
+ case PP_URLRESPONSEPROPERTY_REDIRECTURL: |
+ if (IsRedirect(data_.status_code)) |
+ return StringVar::StringToPPVar(data_.redirect_url); |
+ break; |
+ case PP_URLRESPONSEPROPERTY_REDIRECTMETHOD: |
+ if (IsRedirect(data_.status_code)) |
+ return StringVar::StringToPPVar(data_.status_text); |
+ break; |
+ case PP_URLRESPONSEPROPERTY_STATUSCODE: |
+ return PP_MakeInt32(data_.status_code); |
+ case PP_URLRESPONSEPROPERTY_STATUSLINE: |
+ return StringVar::StringToPPVar(data_.status_text); |
+ case PP_URLRESPONSEPROPERTY_HEADERS: |
+ return StringVar::StringToPPVar(data_.headers); |
+ } |
+ // The default is to return an undefined PP_Var. |
+ return PP_MakeUndefined(); |
+} |
+ |
+PP_Resource URLResponseInfoResource::GetBodyAsFileRef() { |
+ if (!body_as_file_ref_.get()) |
+ return 0; |
+ PpapiGlobals::Get()->GetResourceTracker()->AddRefResource( |
+ body_as_file_ref_.get()); |
+ return body_as_file_ref_.get(); |
+} |
+ |
+URLResponseInfoData URLResponseInfoResource::GetData() { |
+ // One ref is passed to the caller if there's a file ref. |
+ if (body_as_file_ref_.get()) { |
+ PpapiGlobals::Get()->GetResourceTracker()->AddRefResource( |
+ body_as_file_ref_.get()); |
+ } |
+ return data_; |
+} |
+ |
+} // namespace proxy |
+} // namespace ppapi |