Allow external applications to register for mojo: urls
BUG=
R=aa@chromium.org
Review URL: https://codereview.chromium.org/861293002
diff --git a/shell/application_manager/application_manager_unittest.cc b/shell/application_manager/application_manager_unittest.cc
index f3b0503..b8da53b 100644
--- a/shell/application_manager/application_manager_unittest.cc
+++ b/shell/application_manager/application_manager_unittest.cc
@@ -415,6 +415,34 @@
std::map<GURL, GURL> mappings_;
};
+class TestExternal : public ApplicationDelegate {
+ public:
+ TestExternal()
+ : initialize_called_(false),
+ configure_incoming_connection_called_(false) {}
+
+ virtual void Initialize(ApplicationImpl* app) override {
+ initialize_called_ = true;
+ base::MessageLoop::current()->Quit();
+ }
+
+ virtual bool ConfigureIncomingConnection(
+ ApplicationConnection* connection) override {
+ configure_incoming_connection_called_ = true;
+ base::MessageLoop::current()->Quit();
+ return true;
+ }
+
+ bool initialize_called() const { return initialize_called_; }
+ bool configure_incoming_connection_called() const {
+ return configure_incoming_connection_called_;
+ }
+
+ private:
+ bool initialize_called_;
+ bool configure_incoming_connection_called_;
+};
+
} // namespace
class ApplicationManagerTest : public testing::Test {
@@ -696,4 +724,18 @@
custom_loader->set_context(nullptr);
}
+TEST_F(ApplicationManagerTest, ExternalApp) {
+ MessagePipe shell_pipe;
+ TestExternal external;
+ ApplicationImpl app(&external, shell_pipe.handle0.Pass());
+ application_manager_->RegisterExternalApplication(
+ GURL("mojo:test"), shell_pipe.handle1.Pass());
+ loop_.Run();
+ EXPECT_TRUE(external.initialize_called());
+ application_manager_->ConnectToServiceByName(
+ GURL("mojo:test"), std::string());
+ loop_.Run();
+ EXPECT_TRUE(external.configure_incoming_connection_called());
+};
+
} // namespace mojo