15d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 25d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// found in the LICENSE file. 45d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "chrome/browser/ui/app_list/test/chrome_app_list_test_support.h" 65d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/run_loop.h" 81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/browser_process.h" 91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/profiles/profile_manager.h" 105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "chrome/browser/ui/app_list/app_list_service.h" 111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/ui/app_list/app_list_service_impl.h" 125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "chrome/browser/ui/app_list/app_list_syncable_service.h" 135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "chrome/browser/ui/app_list/app_list_syncable_service_factory.h" 145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)namespace test { 165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinamespace { 181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass CreateProfileHelper { 201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci public: 211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci CreateProfileHelper() : profile_(NULL) {} 221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci Profile* CreateAsync() { 241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ProfileManager* profile_manager = g_browser_process->profile_manager(); 251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci base::FilePath temp_profile_dir = 261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci profile_manager->user_data_dir().AppendASCII("Profile 1"); 271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci profile_manager->CreateProfileAsync( 281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci temp_profile_dir, 291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci base::Bind(&CreateProfileHelper::OnProfileCreated, 301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci base::Unretained(this)), 311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci base::string16(), 321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci base::string16(), 331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci std::string()); 341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci run_loop_.Run(); 351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return profile_; 361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci private: 391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void OnProfileCreated(Profile* profile, Profile::CreateStatus status) { 401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (status == Profile::CREATE_STATUS_INITIALIZED) { 411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci profile_ = profile; 421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci run_loop_.Quit(); 431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci base::RunLoop run_loop_; 471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci Profile* profile_; 481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DISALLOW_COPY_AND_ASSIGN(CreateProfileHelper); 501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}; 511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} // namespace 531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)app_list::AppListModel* GetAppListModel(AppListService* service) { 555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return app_list::AppListSyncableServiceFactory::GetForProfile( 565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) service->GetCurrentAppListProfile())->model(); 575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)AppListService* GetAppListService() { 605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // TODO(tapted): Consider testing ash explicitly on the win-ash trybot. 615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return AppListService::Get(chrome::GetActiveDesktop()); 625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciAppListServiceImpl* GetAppListServiceImpl() { 651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // AppListServiceImpl is the only subclass of AppListService, which has pure 661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // virtuals. So this must either be NULL, or an AppListServiceImpl. 671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return static_cast<AppListServiceImpl*>(GetAppListService()); 681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciProfile* CreateSecondProfileAsync() { 711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci CreateProfileHelper helper; 721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return helper.CreateAsync(); 731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} // namespace test 76