examples_main.cc revision 010d83a9304c5a91596085d917d248abff47903a
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/aura/env.h" 135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "ui/base/ime/input_method_initializer.h" 145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "ui/base/resource/resource_bundle.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" 21a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "ui/wm/core/wm_state.h" 225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#if !defined(OS_CHROMEOS) 245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "ui/views/widget/desktop_aura/desktop_screen.h" 255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif 26a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#if defined(OS_WIN) 285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "ui/base/win/scoped_ole_initializer.h" 295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif 30a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 31a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#if defined(USE_X11) 32a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#include "ui/gfx/x/x11_connection.h" 33a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#endif 34a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)int main(int argc, char** argv) { 365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#if defined(OS_WIN) 375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ui::ScopedOleInitializer ole_initializer_; 385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif 395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 40a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) CommandLine::Init(argc, argv); 41a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::AtExitManager at_exit; 43a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 44a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#if defined(USE_X11) 45a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // This demo uses InProcessContextFactory which uses X on a separate Gpu 46a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // thread. 47a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch gfx::InitializeThreadedX11(); 48a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#endif 49a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 50a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) gfx::GLSurface::InitializeOneOff(); 51a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 52a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // The ContextFactory must exist before any Compositors are created. 53a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) scoped_ptr<ui::InProcessContextFactory> context_factory( 54a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) new ui::InProcessContextFactory()); 55a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ui::ContextFactory::SetInstance(context_factory.get()); 56a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::MessageLoopForUI message_loop; 585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::i18n::InitializeICU(); 605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::FilePath pak_dir; 625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) PathService::Get(base::DIR_MODULE, &pak_dir); 635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 645d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::FilePath pak_file; 655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) pak_file = pak_dir.Append(FILE_PATH_LITERAL("ui_test.pak")); 665d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 675d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ui::ResourceBundle::InitSharedInstanceWithPakPath(pak_file); 685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 69010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) aura::Env::CreateInstance(true); 705d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ui::InitializeInputMethodForTesting(); 725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) { 745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) views::DesktopTestViewsDelegate views_delegate; 75a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) wm::WMState wm_state; 765d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 775d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#if !defined(OS_CHROMEOS) 785d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) scoped_ptr<gfx::Screen> desktop_screen(views::CreateDesktopScreen()); 795d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) gfx::Screen::SetScreenInstance(gfx::SCREEN_TYPE_NATIVE, 805d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) desktop_screen.get()); 815d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif 825d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 835d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) views::examples::ShowExamplesWindow( 845d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) views::examples::QUIT_ON_CLOSE, 855d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) NULL, 865d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) scoped_ptr<ScopedVector<views::examples::ExampleBase> >()); 875d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 885d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::RunLoop().Run(); 895d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 905d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ui::ResourceBundle::CleanupSharedInstance(); 915d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 925d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 935d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ui::ShutdownInputMethod(); 94a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 955d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) aura::Env::DeleteInstance(); 96a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return 0; 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 99