12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "base/at_exit.h" 6a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "base/command_line.h" 75d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "base/files/file_path.h" 85d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "base/i18n/icu_util.h" 9a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "base/message_loop/message_loop.h" 105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "base/path_service.h" 11a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "base/run_loop.h" 125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "ui/base/ime/input_method_initializer.h" 135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "ui/base/resource/resource_bundle.h" 14cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "ui/base/ui_base_paths.h" 15a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "ui/compositor/test/in_process_context_factory.h" 165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "ui/gfx/screen.h" 175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "ui/gl/gl_surface.h" 185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "ui/views/examples/example_base.h" 195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "ui/views/examples/examples_window.h" 205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "ui/views/test/desktop_test_views_delegate.h" 215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#if defined(USE_AURA) 235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "ui/aura/env.h" 24a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "ui/wm/core/wm_state.h" 255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif 265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#if !defined(OS_CHROMEOS) && defined(USE_AURA) 285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "ui/views/widget/desktop_aura/desktop_screen.h" 295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif 30a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#if defined(OS_WIN) 325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "ui/base/win/scoped_ole_initializer.h" 335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif 34a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 35a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#if defined(USE_X11) 36a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#include "ui/gfx/x/x11_connection.h" 37a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#endif 38a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)int main(int argc, char** argv) { 405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#if defined(OS_WIN) 415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ui::ScopedOleInitializer ole_initializer_; 425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif 435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 44a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) CommandLine::Init(argc, argv); 45a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::AtExitManager at_exit; 47a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 48a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#if defined(USE_X11) 49a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // This demo uses InProcessContextFactory which uses X on a separate Gpu 50a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // thread. 51a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch gfx::InitializeThreadedX11(); 52a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#endif 53a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 54a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) gfx::GLSurface::InitializeOneOff(); 55a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 56a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // The ContextFactory must exist before any Compositors are created. 57a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) scoped_ptr<ui::InProcessContextFactory> context_factory( 58a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) new ui::InProcessContextFactory()); 59a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::MessageLoopForUI message_loop; 615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::i18n::InitializeICU(); 635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 64cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) ui::RegisterPathProvider(); 655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 66cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) base::FilePath ui_test_pak_path; 67cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) DCHECK(PathService::Get(ui::UI_TEST_PAK, &ui_test_pak_path)); 68cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) ui::ResourceBundle::InitSharedInstanceWithPakPath(ui_test_pak_path); 695d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 705f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#if defined(USE_AURA) 71010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) aura::Env::CreateInstance(true); 72cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) aura::Env::GetInstance()->set_context_factory(context_factory.get()); 735f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif 745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ui::InitializeInputMethodForTesting(); 755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 765d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) { 775d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) views::DesktopTestViewsDelegate views_delegate; 785f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#if defined(USE_AURA) 79a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) wm::WMState wm_state; 805f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif 815f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#if !defined(OS_CHROMEOS) && defined(USE_AURA) 825d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) scoped_ptr<gfx::Screen> desktop_screen(views::CreateDesktopScreen()); 835d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) gfx::Screen::SetScreenInstance(gfx::SCREEN_TYPE_NATIVE, 845d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) desktop_screen.get()); 855d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif 865d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 875d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) views::examples::ShowExamplesWindow( 885d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) views::examples::QUIT_ON_CLOSE, 895d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) NULL, 905d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) scoped_ptr<ScopedVector<views::examples::ExampleBase> >()); 915d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 925d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::RunLoop().Run(); 935d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 945d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ui::ResourceBundle::CleanupSharedInstance(); 955d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 965d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 975d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ui::ShutdownInputMethod(); 98a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 995f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#if defined(USE_AURA) 1005d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) aura::Env::DeleteInstance(); 1015f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif 102a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 1032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return 0; 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 105