1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef MOJO_SHELL_SHELL_TEST_HELPER_ 6#define MOJO_SHELL_SHELL_TEST_HELPER_ 7 8#include "base/macros.h" 9#include "base/memory/scoped_ptr.h" 10#include "base/run_loop.h" 11#include "mojo/application_manager/application_loader.h" 12#include "mojo/shell/context.h" 13 14class GURL; 15 16namespace mojo { 17 18class ApplicationLoader; 19 20namespace shell { 21 22// ShellTestHelper is useful for tests to establish a connection to the 23// ApplicationManager. Invoke Init() to establish the connection. Once done, 24// application_manager() returns the ApplicationManager. 25class ShellTestHelper { 26 public: 27 ShellTestHelper(); 28 ~ShellTestHelper(); 29 30 void Init(); 31 32 ApplicationManager* application_manager() { 33 return context_.application_manager(); 34 } 35 36 // Sets a ApplicationLoader for the specified URL. |loader| is ultimately used 37 // on 38 // the thread this class spawns. 39 void SetLoaderForURL(scoped_ptr<ApplicationLoader> loader, const GURL& url); 40 41 private: 42 Context context_; 43 base::MessageLoop shell_loop_; 44 scoped_ptr<ApplicationManager::TestAPI> test_api_; 45 DISALLOW_COPY_AND_ASSIGN(ShellTestHelper); 46}; 47 48} // namespace shell 49} // namespace mojo 50 51#endif // MOJO_SHELL_SHELL_TEST_HELPER_ 52