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#include "mojo/application_manager/background_shell_application_loader.h" 6 7#include "testing/gtest/include/gtest/gtest.h" 8 9namespace mojo { 10 11namespace { 12 13class DummyLoader : public ApplicationLoader { 14 public: 15 DummyLoader() : simulate_app_quit_(true) {} 16 virtual ~DummyLoader() {} 17 18 // ApplicationLoader overrides: 19 virtual void Load(ApplicationManager* manager, 20 const GURL& url, 21 scoped_refptr<LoadCallbacks> callbacks) OVERRIDE { 22 if (simulate_app_quit_) 23 base::MessageLoop::current()->Quit(); 24 } 25 26 virtual void OnApplicationError(ApplicationManager* manager, 27 const GURL& url) OVERRIDE {} 28 29 void DontSimulateAppQuit() { simulate_app_quit_ = false; } 30 31 private: 32 bool simulate_app_quit_; 33}; 34 35} // namespace 36 37// Tests that the loader can start and stop gracefully. 38TEST(BackgroundShellApplicationLoaderTest, StartStop) { 39 scoped_ptr<ApplicationLoader> real_loader(new DummyLoader()); 40 BackgroundShellApplicationLoader loader( 41 real_loader.Pass(), "test", base::MessageLoop::TYPE_DEFAULT); 42} 43 44// Tests that the loader can load a service that is well behaved (quits 45// itself). 46TEST(BackgroundShellApplicationLoaderTest, Load) { 47 scoped_ptr<ApplicationLoader> real_loader(new DummyLoader()); 48 BackgroundShellApplicationLoader loader( 49 real_loader.Pass(), "test", base::MessageLoop::TYPE_DEFAULT); 50 MessagePipe dummy; 51 scoped_refptr<ApplicationLoader::SimpleLoadCallbacks> callbacks( 52 new ApplicationLoader::SimpleLoadCallbacks(dummy.handle0.Pass())); 53 loader.Load(NULL, GURL(), callbacks); 54} 55 56} // namespace mojo 57