Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1700)

Unified Diff: mojo/services/html_viewer/html_document_view.cc

Issue 453133002: Mojo: Generalize blink::URLRequest -> mojo::URLRequest conversion, and use it (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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(),

Powered by Google App Engine
This is Rietveld 408576698