Chromium Code Reviews| Index: mojo/services/html_viewer/html_document_view.cc |
| diff --git a/mojo/services/html_viewer/html_document_view.cc b/mojo/services/html_viewer/html_document_view.cc |
| index 812493aa710869d56a13d2819d32cade70116b9e..a8f51070235f3413e3716add55086a79b22d3507 100644 |
| --- a/mojo/services/html_viewer/html_document_view.cc |
| +++ b/mojo/services/html_viewer/html_document_view.cc |
| @@ -11,6 +11,7 @@ |
| #include "base/thread_task_runner_handle.h" |
| #include "mojo/public/cpp/system/data_pipe.h" |
| #include "mojo/services/html_viewer/blink_input_events_type_converters.h" |
| +#include "mojo/services/html_viewer/blink_url_request_type_converters.h" |
| #include "mojo/services/html_viewer/webstoragenamespace_impl.h" |
| #include "mojo/services/html_viewer/weburlloader_impl.h" |
| #include "mojo/services/public/cpp/view_manager/node.h" |
| @@ -34,83 +35,6 @@ |
| namespace mojo { |
| namespace { |
| -// Ripped from web_url_loader_impl.cc. Why is everything so complicated? |
| -class HeaderFlattener : public blink::WebHTTPHeaderVisitor { |
| - public: |
| - HeaderFlattener() : has_accept_header_(false) {} |
| - |
| - virtual void visitHeader(const blink::WebString& name, |
| - const blink::WebString& value) { |
| - // Headers are latin1. |
| - const std::string& name_latin1 = name.latin1(); |
| - const std::string& value_latin1 = value.latin1(); |
| - |
| - // Skip over referrer headers found in the header map because we already |
| - // pulled it out as a separate parameter. |
| - if (LowerCaseEqualsASCII(name_latin1, "referer")) |
| - return; |
| - |
| - if (LowerCaseEqualsASCII(name_latin1, "accept")) |
| - has_accept_header_ = true; |
| - |
| - buffer_.push_back(name_latin1 + ": " + value_latin1); |
| - } |
| - |
| - Array<String> GetBuffer() { |
| - // In some cases, WebKit doesn't add an Accept header, but not having the |
| - // header confuses some web servers. See bug 808613. |
| - if (!has_accept_header_) { |
| - buffer_.push_back("Accept: */*"); |
| - has_accept_header_ = true; |
| - } |
| - return buffer_.Pass(); |
| - } |
| - |
| - private: |
| - Array<String> buffer_; |
| - bool has_accept_header_; |
| -}; |
| - |
| -void AddRequestBody(NavigationDetails* nav_details, |
| - const blink::WebURLRequest& request) { |
| - if (request.httpBody().isNull()) |
| - return; |
| - |
| - uint32_t i = 0; |
| - blink::WebHTTPBody::Element element; |
| - while (request.httpBody().elementAt(i++, element)) { |
| - switch (element.type) { |
| - case blink::WebHTTPBody::Element::TypeData: |
| - if (!element.data.isEmpty()) { |
| - // WebKit sometimes gives up empty data to append. These aren't |
| - // necessary so we just optimize those out here. |
| - uint32_t num_bytes = static_cast<uint32_t>(element.data.size()); |
| - MojoCreateDataPipeOptions options; |
| - options.struct_size = sizeof(MojoCreateDataPipeOptions); |
| - options.flags = MOJO_CREATE_DATA_PIPE_OPTIONS_FLAG_NONE; |
| - options.element_num_bytes = 1; |
| - options.capacity_num_bytes = num_bytes; |
| - DataPipe data_pipe(options); |
| - nav_details->request->body.push_back( |
| - data_pipe.consumer_handle.Pass()); |
| - WriteDataRaw(data_pipe.producer_handle.get(), |
| - element.data.data(), |
| - &num_bytes, |
| - MOJO_WRITE_DATA_FLAG_ALL_OR_NONE); |
| - } |
| - break; |
| - case blink::WebHTTPBody::Element::TypeFile: |
| - case blink::WebHTTPBody::Element::TypeFileSystemURL: |
| - case blink::WebHTTPBody::Element::TypeBlob: |
| - // TODO(mpcomplete): handle these. |
| - NOTIMPLEMENTED(); |
| - break; |
| - default: |
| - NOTREACHED(); |
| - } |
| - } |
| -} |
| - |
| void ConfigureSettings(blink::WebSettings* settings) { |
| settings->setAcceleratedCompositingEnabled(false); |
| settings->setCookieEnabled(true); |
| @@ -241,14 +165,8 @@ blink::WebNavigationPolicy HTMLDocumentView::decidePolicyForNavigation( |
| return default_policy; |
| NavigationDetailsPtr nav_details(NavigationDetails::New()); |
| - nav_details->request->url = request.url().string().utf8(); |
| - nav_details->request->method = request.httpMethod().utf8(); |
| - |
| - HeaderFlattener flattener; |
| - request.visitHTTPHeaderFields(&flattener); |
| - nav_details->request->headers = flattener.GetBuffer().Pass(); |
| - |
| - AddRequestBody(nav_details.get(), request); |
| + nav_details->request = |
| + TypeConverter<URLRequestPtr, blink::WebURLRequest>::ConvertFrom(request); |
|
darin (slow to review)
2014/08/12 16:23:12
You can just use URLRequest::From(request) here.
Matt Perry
2014/08/12 18:42:53
Done.
|
| navigator_host_->RequestNavigate( |
| view_->node()->id(), |