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

Unified Diff: components/html_viewer/html_document_application_delegate.cc

Issue 1677293002: Bye bye Mandoline (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: moar Created 4 years, 10 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
« no previous file with comments | « components/html_viewer/html_document_application_delegate.h ('k') | components/html_viewer/html_factory.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/html_viewer/html_document_application_delegate.cc
diff --git a/components/html_viewer/html_document_application_delegate.cc b/components/html_viewer/html_document_application_delegate.cc
deleted file mode 100644
index e1208d2c85799a8f615e6f42a6539a83d67c2354..0000000000000000000000000000000000000000
--- a/components/html_viewer/html_document_application_delegate.cc
+++ /dev/null
@@ -1,186 +0,0 @@
-// Copyright 2015 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 "components/html_viewer/html_document_application_delegate.h"
-
-#include <utility>
-
-#include "base/bind.h"
-#include "base/macros.h"
-#include "components/html_viewer/global_state.h"
-#include "components/html_viewer/html_document.h"
-#include "mojo/shell/public/cpp/shell_client.h"
-
-namespace html_viewer {
-
-// ServiceConnectorQueue records all incoming service requests and processes
-// them once PushRequestsTo() is called. This is useful if you need to delay
-// processing incoming service requests.
-class HTMLDocumentApplicationDelegate::ServiceConnectorQueue
- : public mojo::ServiceConnector {
- public:
- ServiceConnectorQueue() {}
- ~ServiceConnectorQueue() override {}
-
- void PushRequestsTo(mojo::Connection* connection) {
- ScopedVector<Request> requests;
- requests_.swap(requests);
- for (Request* request : requests) {
- connection->GetLocalServiceProvider()->ConnectToService(
- request->interface_name, std::move(request->handle));
- }
- }
-
- private:
- struct Request {
- std::string interface_name;
- mojo::ScopedMessagePipeHandle handle;
- };
-
- // mojo::ServiceConnector:
- void ConnectToService(mojo::Connection* connection,
- const std::string& interface_name,
- mojo::ScopedMessagePipeHandle handle) override {
- scoped_ptr<Request> request(new Request);
- request->interface_name = interface_name;
- request->handle = std::move(handle);
- requests_.push_back(std::move(request));
- }
-
- ScopedVector<Request> requests_;
-
- DISALLOW_COPY_AND_ASSIGN(ServiceConnectorQueue);
-};
-
-HTMLDocumentApplicationDelegate::HTMLDocumentApplicationDelegate(
- mojo::ApplicationRequest request,
- mojo::URLResponsePtr response,
- GlobalState* global_state,
- scoped_ptr<mojo::AppRefCount> parent_app_refcount,
- const mojo::Callback<void()>& destruct_callback)
- : app_(this,
- std::move(request),
- base::Bind(&HTMLDocumentApplicationDelegate::OnTerminate,
- base::Unretained(this))),
- parent_app_refcount_(std::move(parent_app_refcount)),
- url_(response->url),
- initial_response_(std::move(response)),
- global_state_(global_state),
- html_factory_(this),
- destruct_callback_(destruct_callback),
- weak_factory_(this) {}
-
-HTMLDocumentApplicationDelegate::~HTMLDocumentApplicationDelegate() {
- // Deleting the documents is going to trigger a callback to
- // OnHTMLDocumentDeleted() and remove from |documents_|. Copy the set so we
- // don't have to worry about the set being modified out from under us.
- std::set<HTMLDocument*> documents2(documents2_);
- for (HTMLDocument* doc : documents2)
- doc->Destroy();
- DCHECK(documents2_.empty());
- destruct_callback_.Run();
-}
-
-// Callback from the quit closure. We key off this rather than
-// mojo::ShellClient::Quit() as we don't want to shut down the messageloop
-// when we quit (the messageloop is shared among multiple
-// HTMLDocumentApplicationDelegates).
-void HTMLDocumentApplicationDelegate::OnTerminate() {
- delete this;
-}
-
-// mojo::ShellClient;
-void HTMLDocumentApplicationDelegate::Initialize(mojo::Shell* shell,
- const std::string& url,
- uint32_t id) {
- app_.ConnectToService("mojo:network_service", &url_loader_factory_);
-}
-
-bool HTMLDocumentApplicationDelegate::AcceptConnection(
- mojo::Connection* connection) {
- if (initial_response_) {
- OnResponseReceived(nullptr, mojo::URLLoaderPtr(), connection, nullptr,
- std::move(initial_response_));
- } else if (url_ == "about:blank") {
- // This is a little unfortunate. At the browser side, when starting a new
- // app for "about:blank", the application manager uses
- // mojo::shell::AboutFetcher to construct a response for "about:blank".
- // However, when an app for "about:blank" already exists, it is reused and
- // we end up here. We cannot fetch the URL using mojo::URLLoader because it
- // is not an actual Web resource.
- // TODO(yzshen): find out a better approach.
- mojo::URLResponsePtr response(mojo::URLResponse::New());
- response->url = url_;
- response->status_code = 200;
- response->mime_type = "text/html";
- OnResponseReceived(nullptr, mojo::URLLoaderPtr(), connection, nullptr,
- std::move(response));
- } else {
- // HTMLDocument provides services, but is created asynchronously. Queue up
- // requests until the HTMLDocument is created.
- scoped_ptr<ServiceConnectorQueue> service_connector_queue(
- new ServiceConnectorQueue);
- connection->SetServiceConnector(service_connector_queue.get());
-
- mojo::URLLoaderPtr loader;
- url_loader_factory_->CreateURLLoader(GetProxy(&loader));
- mojo::URLRequestPtr request(mojo::URLRequest::New());
- request->url = url_;
- request->auto_follow_redirects = true;
-
- // |loader| will be passed to the OnResponseReceived method through a
- // callback. Because order of evaluation is undefined, a reference to the
- // raw pointer is needed.
- mojo::URLLoader* raw_loader = loader.get();
- // The app needs to stay alive while waiting for the response to be
- // available.
- scoped_ptr<mojo::AppRefCount> app_retainer(app_.CreateAppRefCount());
- raw_loader->Start(
- std::move(request),
- base::Bind(&HTMLDocumentApplicationDelegate::OnResponseReceived,
- weak_factory_.GetWeakPtr(), base::Passed(&app_retainer),
- base::Passed(&loader), connection,
- base::Passed(&service_connector_queue)));
- }
- return true;
-}
-
-void HTMLDocumentApplicationDelegate::OnHTMLDocumentDeleted2(
- HTMLDocument* document) {
- DCHECK(documents2_.count(document) > 0);
- documents2_.erase(document);
-}
-
-void HTMLDocumentApplicationDelegate::OnResponseReceived(
- scoped_ptr<mojo::AppRefCount> app_refcount,
- mojo::URLLoaderPtr loader,
- mojo::Connection* connection,
- scoped_ptr<ServiceConnectorQueue> connector_queue,
- mojo::URLResponsePtr response) {
- // HTMLDocument is destroyed when the hosting view is destroyed, or
- // explicitly from our destructor.
- HTMLDocument* document = new HTMLDocument(
- &app_, connection, std::move(response), global_state_,
- base::Bind(&HTMLDocumentApplicationDelegate::OnHTMLDocumentDeleted2,
- base::Unretained(this)),
- html_factory_);
- documents2_.insert(document);
-
- if (connector_queue) {
- connector_queue->PushRequestsTo(connection);
- connection->SetServiceConnector(nullptr);
- }
-}
-
-HTMLFrame* HTMLDocumentApplicationDelegate::CreateHTMLFrame(
- HTMLFrame::CreateParams* params) {
- return new HTMLFrame(params);
-}
-
-HTMLWidgetRootLocal* HTMLDocumentApplicationDelegate::CreateHTMLWidgetRootLocal(
- HTMLWidgetRootLocal::CreateParams* params) {
- return new HTMLWidgetRootLocal(params);
-}
-
-} // namespace html_viewer
« no previous file with comments | « components/html_viewer/html_document_application_delegate.h ('k') | components/html_viewer/html_factory.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698