aw_web_resource_request.cc 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. // Copyright 2016 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. #include "android_webview/browser/network_service/aw_web_resource_request.h"
  5. #include "base/android/jni_array.h"
  6. #include "base/android/jni_string.h"
  7. #include "net/http/http_request_headers.h"
  8. #include "net/http/http_response_headers.h"
  9. #include "services/network/public/cpp/resource_request.h"
  10. #include "services/network/public/mojom/fetch_api.mojom.h"
  11. #include "ui/base/page_transition_types.h"
  12. using base::android::ConvertJavaStringToUTF16;
  13. using base::android::ConvertUTF8ToJavaString;
  14. using base::android::ConvertUTF16ToJavaString;
  15. using base::android::ToJavaArrayOfStrings;
  16. namespace android_webview {
  17. namespace {
  18. void ConvertRequestHeadersToVectors(const net::HttpRequestHeaders& headers,
  19. std::vector<std::string>* header_names,
  20. std::vector<std::string>* header_values) {
  21. DCHECK(header_names->empty());
  22. DCHECK(header_values->empty());
  23. net::HttpRequestHeaders::Iterator headers_iterator(headers);
  24. while (headers_iterator.GetNext()) {
  25. header_names->push_back(headers_iterator.name());
  26. header_values->push_back(headers_iterator.value());
  27. }
  28. }
  29. } // namespace
  30. AwWebResourceRequest::AwWebResourceRequest(
  31. const network::ResourceRequest& request)
  32. : url(request.url.spec()),
  33. method(request.method),
  34. is_outermost_main_frame(request.destination ==
  35. network::mojom::RequestDestination::kDocument),
  36. has_user_gesture(request.has_user_gesture),
  37. is_renderer_initiated(ui::PageTransitionIsWebTriggerable(
  38. static_cast<ui::PageTransition>(request.transition_type))) {
  39. ConvertRequestHeadersToVectors(request.headers, &header_names,
  40. &header_values);
  41. }
  42. AwWebResourceRequest::AwWebResourceRequest(
  43. const std::string& in_url,
  44. const std::string& in_method,
  45. bool in_is_outermost_main_frame,
  46. bool in_has_user_gesture,
  47. const net::HttpRequestHeaders& in_headers)
  48. : url(in_url),
  49. method(in_method),
  50. is_outermost_main_frame(in_is_outermost_main_frame),
  51. has_user_gesture(in_has_user_gesture) {
  52. ConvertRequestHeadersToVectors(in_headers, &header_names, &header_values);
  53. }
  54. AwWebResourceRequest::AwWebResourceRequest(const AwWebResourceRequest& other) =
  55. default;
  56. AwWebResourceRequest::AwWebResourceRequest(AwWebResourceRequest&& other) =
  57. default;
  58. AwWebResourceRequest& AwWebResourceRequest::operator=(
  59. AwWebResourceRequest&& other) = default;
  60. AwWebResourceRequest::~AwWebResourceRequest() = default;
  61. AwWebResourceRequest::AwJavaWebResourceRequest::AwJavaWebResourceRequest() =
  62. default;
  63. AwWebResourceRequest::AwJavaWebResourceRequest::~AwJavaWebResourceRequest() =
  64. default;
  65. // static
  66. void AwWebResourceRequest::ConvertToJava(JNIEnv* env,
  67. const AwWebResourceRequest& request,
  68. AwJavaWebResourceRequest* jRequest) {
  69. jRequest->jurl = ConvertUTF8ToJavaString(env, request.url);
  70. jRequest->jmethod = ConvertUTF8ToJavaString(env, request.method);
  71. jRequest->jheader_names = ToJavaArrayOfStrings(env, request.header_names);
  72. jRequest->jheader_values = ToJavaArrayOfStrings(env, request.header_values);
  73. }
  74. } // namespace android_webview