A few more spurious cleanups on ApplicationImpl.

R=sky@chromium.org
http://crbug.com/519583

Review URL: https://codereview.chromium.org/1288743002

Cr-Commit-Position: refs/heads/master@{#343094}


CrOS-Libchrome-Original-Commit: 47fa58e5f440daecb1e81ed407224042611bb562
diff --git a/mojo/application/public/cpp/application_impl.h b/mojo/application/public/cpp/application_impl.h
index e05e741..b2e9675 100644
--- a/mojo/application/public/cpp/application_impl.h
+++ b/mojo/application/public/cpp/application_impl.h
@@ -56,6 +56,20 @@
 //
 class ApplicationImpl : public Application {
  public:
+  class TestApi {
+   public:
+    explicit TestApi(ApplicationImpl* application)
+        : application_(application) {}
+
+    void UnbindConnections(InterfaceRequest<Application>* application_request,
+                           ShellPtr* shell) {
+      application_->UnbindConnections(application_request, shell);
+    }
+
+   private:
+    ApplicationImpl* application_;
+  };
+
   // Does not take ownership of |delegate|, which must remain valid for the
   // lifetime of ApplicationImpl.
   ApplicationImpl(ApplicationDelegate* delegate,
@@ -98,24 +112,13 @@
     connection->ConnectToService(ptr);
   }
 
-  // Application implementation.
-  void Initialize(ShellPtr shell, const mojo::String& url) override;
-
-  // Block until the Application is initialized, if it is not already.
-  void WaitForInitialize();
-
-  // Unbinds the Shell and Application connections. Can be used to re-bind the
-  // handles to another implementation of ApplicationImpl, for instance when
-  // running apptests.
-  void UnbindConnections(InterfaceRequest<Application>* application_request,
-                         ShellPtr* shell);
-
   // Initiate shutdown of this application. This may involve a round trip to the
   // Shell to ensure there are no inbound service requests.
   void Quit();
 
  private:
   // Application implementation.
+  void Initialize(ShellPtr shell, const mojo::String& url) override;
   void AcceptConnection(const String& requestor_url,
                         InterfaceRequest<ServiceProvider> services,
                         ServiceProviderPtr exposed_services,
@@ -129,6 +132,12 @@
   // from Quit() once the Shell has OK'ed shutdown.
   void QuitNow();
 
+  // Unbinds the Shell and Application connections. Can be used to re-bind the
+  // handles to another implementation of ApplicationImpl, for instance when
+  // running apptests.
+  void UnbindConnections(InterfaceRequest<Application>* application_request,
+                         ShellPtr* shell);
+
   // We track the lifetime of incoming connection registries as it more
   // convenient for the client.
   ScopedVector<ApplicationConnection> incoming_connections_;
diff --git a/mojo/application/public/cpp/lib/application_impl.cc b/mojo/application/public/cpp/lib/application_impl.cc
index 9f2c419..aafd458 100644
--- a/mojo/application/public/cpp/lib/application_impl.cc
+++ b/mojo/application/public/cpp/lib/application_impl.cc
@@ -90,18 +90,6 @@
   delegate_->Initialize(this);
 }
 
-void ApplicationImpl::WaitForInitialize() {
-  if (!shell_)
-    binding_.WaitForIncomingMethodCall();
-}
-
-void ApplicationImpl::UnbindConnections(
-    InterfaceRequest<Application>* application_request,
-    ShellPtr* shell) {
-  *application_request = binding_.Unbind();
-  shell->Bind(shell_.PassInterface());
-}
-
 void ApplicationImpl::Quit() {
   // We can't quit immediately, since there could be in-flight requests from the
   // shell. So check with it first.
@@ -162,4 +150,11 @@
   termination_closure_.Run();
 }
 
+void ApplicationImpl::UnbindConnections(
+    InterfaceRequest<Application>* application_request,
+    ShellPtr* shell) {
+  *application_request = binding_.Unbind();
+  shell->Bind(shell_.PassInterface());
+}
+
 }  // namespace mojo
diff --git a/mojo/application/public/cpp/lib/application_test_base.cc b/mojo/application/public/cpp/lib/application_test_base.cc
index 3b4a30e..e5d1aa5 100644
--- a/mojo/application/public/cpp/lib/application_test_base.cc
+++ b/mojo/application/public/cpp/lib/application_test_base.cc
@@ -130,14 +130,18 @@
                                           g_application_request.Pass());
 
   // Fake application initialization.
-  application_impl_->Initialize(g_shell.Pass(), g_url);
+  Application* application = application_impl_;
+  application->Initialize(g_shell.Pass(), g_url);
 }
 
 void ApplicationTestBase::TearDown() {
   MOJO_CHECK(!g_application_request.is_pending());
   MOJO_CHECK(!g_shell);
 
-  application_impl_->UnbindConnections(&g_application_request, &g_shell);
+  {
+    ApplicationImpl::TestApi test_api(application_impl_);
+    test_api.UnbindConnections(&g_application_request, &g_shell);
+  }
   delete application_impl_;
   if (ShouldCreateDefaultRunLoop())
     Environment::DestroyDefaultRunLoop();