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

Unified Diff: mojo/shell/application_manager.cc

Issue 1228743002: Mandoline: Move ContentHandlerConnection into separate file (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased Created 5 years, 5 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/shell/application_manager.cc
diff --git a/mojo/shell/application_manager.cc b/mojo/shell/application_manager.cc
index d953a9013ef81095b6a990b827c29044db671e73..10d8d146035d46e065e8185b2bfdfb0c5b2d0856 100644
--- a/mojo/shell/application_manager.cc
+++ b/mojo/shell/application_manager.cc
@@ -14,6 +14,7 @@
#include "mojo/application/public/interfaces/content_handler.mojom.h"
#include "mojo/public/cpp/bindings/binding.h"
#include "mojo/public/cpp/bindings/error_handler.h"
+#include "mojo/shell/content_handler_connection.h"
#include "mojo/shell/fetcher.h"
#include "mojo/shell/local_fetcher.h"
#include "mojo/shell/network_fetcher.h"
@@ -32,45 +33,6 @@ bool has_created_instance = false;
} // namespace
-class ApplicationManager::ContentHandlerConnection : public ErrorHandler {
- public:
- ContentHandlerConnection(ApplicationManager* manager,
- const GURL& content_handler_url,
- const GURL& requestor_url,
- const std::string& qualifier)
- : manager_(manager),
- content_handler_url_(content_handler_url),
- content_handler_qualifier_(qualifier) {
- ServiceProviderPtr services;
- mojo::URLRequestPtr request(mojo::URLRequest::New());
- request->url = mojo::String::From(content_handler_url.spec());
- manager->ConnectToApplicationInternal(
- request.Pass(), qualifier, requestor_url, GetProxy(&services),
- nullptr, base::Closure());
- MessagePipe pipe;
- content_handler_.Bind(
- InterfacePtrInfo<ContentHandler>(pipe.handle0.Pass(), 0u));
- services->ConnectToService(ContentHandler::Name_, pipe.handle1.Pass());
- content_handler_.set_error_handler(this);
- }
-
- ContentHandler* content_handler() { return content_handler_.get(); }
-
- GURL content_handler_url() { return content_handler_url_; }
- std::string content_handler_qualifier() { return content_handler_qualifier_; }
-
- private:
- // ErrorHandler implementation:
- void OnConnectionError() override { manager_->OnContentHandlerError(this); }
-
- ApplicationManager* manager_;
- GURL content_handler_url_;
- std::string content_handler_qualifier_;
- ContentHandlerPtr content_handler_;
-
- DISALLOW_COPY_AND_ASSIGN(ContentHandlerConnection);
-};
-
// static
ApplicationManager::TestAPI::TestAPI(ApplicationManager* manager)
: manager_(manager) {
@@ -93,7 +55,9 @@ ApplicationManager::ApplicationManager(Delegate* delegate)
}
ApplicationManager::~ApplicationManager() {
- STLDeleteValues(&url_to_content_handler_);
+ URLToContentHandlerMap url_to_content_handler(url_to_content_handler_);
+ for (auto& pair : url_to_content_handler)
+ pair.second->CloseConnection();
TerminateShellConnections();
STLDeleteValues(&url_to_loader_);
STLDeleteValues(&scheme_to_loader_);
@@ -523,14 +487,13 @@ void ApplicationManager::OnShellImplError(ShellImpl* shell_impl) {
on_application_end.Run();
}
-void ApplicationManager::OnContentHandlerError(
+void ApplicationManager::OnContentHandlerConnectionClosed(
ContentHandlerConnection* content_handler) {
// Remove the mapping to the content handler.
auto it = url_to_content_handler_.find(
std::make_pair(content_handler->content_handler_url(),
content_handler->content_handler_qualifier()));
DCHECK(it != url_to_content_handler_.end());
- delete it->second;
url_to_content_handler_.erase(it);
}

Powered by Google App Engine
This is Rietveld 408576698