16e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 26e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 36e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// found in the LICENSE file. 46e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 56e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "mojo/application_manager/background_shell_application_loader.h" 66e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 76e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 86e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 96e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)namespace mojo { 106e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 116e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)namespace { 126e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 136e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)class DummyLoader : public ApplicationLoader { 146e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) public: 156e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) DummyLoader() : simulate_app_quit_(true) {} 166e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) virtual ~DummyLoader() {} 176e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 186e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // ApplicationLoader overrides: 196e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) virtual void Load(ApplicationManager* manager, 206e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) const GURL& url, 216e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) scoped_refptr<LoadCallbacks> callbacks) OVERRIDE { 226e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) if (simulate_app_quit_) 236e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) base::MessageLoop::current()->Quit(); 246e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) } 256e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual void OnApplicationError(ApplicationManager* manager, 271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const GURL& url) OVERRIDE {} 286e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 296e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) void DontSimulateAppQuit() { simulate_app_quit_ = false; } 306e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 316e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) private: 326e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) bool simulate_app_quit_; 336e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)}; 346e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 356e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} // namespace 366e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 376e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// Tests that the loader can start and stop gracefully. 386e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)TEST(BackgroundShellApplicationLoaderTest, StartStop) { 396e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) scoped_ptr<ApplicationLoader> real_loader(new DummyLoader()); 406e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) BackgroundShellApplicationLoader loader( 416e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) real_loader.Pass(), "test", base::MessageLoop::TYPE_DEFAULT); 426e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 436e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 446e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// Tests that the loader can load a service that is well behaved (quits 456e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// itself). 466e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)TEST(BackgroundShellApplicationLoaderTest, Load) { 476e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) scoped_ptr<ApplicationLoader> real_loader(new DummyLoader()); 486e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) BackgroundShellApplicationLoader loader( 496e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) real_loader.Pass(), "test", base::MessageLoop::TYPE_DEFAULT); 506e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) MessagePipe dummy; 516e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) scoped_refptr<ApplicationLoader::SimpleLoadCallbacks> callbacks( 526e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) new ApplicationLoader::SimpleLoadCallbacks(dummy.handle0.Pass())); 536e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) loader.Load(NULL, GURL(), callbacks); 546e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 556e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 566e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} // namespace mojo 57