Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(103)

Side by Side Diff: ui/views/mus/aura_init.cc

Issue 2387233002: chrome/mash: Load resources before running the mus app. (Closed)
Patch Set: . Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ui/views/mus/aura_init.h" 5 #include "ui/views/mus/aura_init.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/lazy_instance.h" 9 #include "base/lazy_instance.h"
10 #include "base/macros.h" 10 #include "base/macros.h"
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
48 AuraInit::AuraInit(shell::Connector* connector, 48 AuraInit::AuraInit(shell::Connector* connector,
49 const std::string& resource_file, 49 const std::string& resource_file,
50 const std::string& resource_file_200) 50 const std::string& resource_file_200)
51 : resource_file_(resource_file), 51 : resource_file_(resource_file),
52 resource_file_200_(resource_file_200), 52 resource_file_200_(resource_file_200),
53 env_(aura::Env::CreateInstance()), 53 env_(aura::Env::CreateInstance()),
54 views_delegate_(new MusViewsDelegate) { 54 views_delegate_(new MusViewsDelegate) {
55 ui::MaterialDesignController::Initialize(); 55 ui::MaterialDesignController::Initialize();
56 InitializeResources(connector); 56 InitializeResources(connector);
57 57
58 // Initialize the skia font code to go ask fontconfig underneath.
59 #if defined(OS_LINUX)
60 font_loader_ = sk_make_sp<font_service::FontLoader>(connector);
61 SkFontConfigInterface::SetGlobal(font_loader_.get());
62 #endif
63
64 // There is a bunch of static state in gfx::Font, by running this now,
65 // before any other apps load, we ensure all the state is set up.
66 gfx::Font();
67
58 ui::InitializeInputMethodForTesting(); 68 ui::InitializeInputMethodForTesting();
59 } 69 }
60 70
61 AuraInit::~AuraInit() { 71 AuraInit::~AuraInit() {
62 #if defined(OS_LINUX) 72 #if defined(OS_LINUX)
63 if (font_loader_.get()) { 73 if (font_loader_.get()) {
64 SkFontConfigInterface::SetGlobal(nullptr); 74 SkFontConfigInterface::SetGlobal(nullptr);
65 // FontLoader is ref counted. We need to explicitly shutdown the background 75 // FontLoader is ref counted. We need to explicitly shutdown the background
66 // thread, otherwise the background thread may be shutdown after the app is 76 // thread, otherwise the background thread may be shutdown after the app is
67 // torn down, when we're in a bad state. 77 // torn down, when we're in a bad state.
68 font_loader_->Shutdown(); 78 font_loader_->Shutdown();
69 } 79 }
70 #endif 80 #endif
71 } 81 }
72 82
73 void AuraInit::InitializeResources(shell::Connector* connector) { 83 void AuraInit::InitializeResources(shell::Connector* connector) {
msw 2016/10/03 22:07:39 q: Will this fail on devices without the specified
sadrul 2016/10/04 00:42:48 On device, we can only run with chrome --mash (sin
msw 2016/10/04 00:47:59 Ah, I didn't catch the early return; maybe comment
sadrul 2016/10/04 01:56:46 Added a comment.
74 if (ui::ResourceBundle::HasSharedInstance()) 84 if (ui::ResourceBundle::HasSharedInstance())
75 return; 85 return;
76 86
77 std::set<std::string> resource_paths({resource_file_}); 87 std::set<std::string> resource_paths({resource_file_});
78 if (!resource_file_200_.empty()) 88 if (!resource_file_200_.empty())
79 resource_paths.insert(resource_file_200_); 89 resource_paths.insert(resource_file_200_);
80 90
81 catalog::ResourceLoader loader; 91 catalog::ResourceLoader loader;
82 filesystem::mojom::DirectoryPtr directory; 92 filesystem::mojom::DirectoryPtr directory;
83 connector->ConnectToInterface("mojo:catalog", &directory); 93 connector->ConnectToInterface("mojo:catalog", &directory);
84 CHECK(loader.OpenFiles(std::move(directory), resource_paths)); 94 CHECK(loader.OpenFiles(std::move(directory), resource_paths));
85 ui::RegisterPathProvider(); 95 ui::RegisterPathProvider();
86 base::File pak_file = loader.TakeFile(resource_file_); 96 base::File pak_file = loader.TakeFile(resource_file_);
87 base::File pak_file_2 = pak_file.Duplicate(); 97 base::File pak_file_2 = pak_file.Duplicate();
88 ui::ResourceBundle::InitSharedInstanceWithPakFileRegion( 98 ui::ResourceBundle::InitSharedInstanceWithPakFileRegion(
89 std::move(pak_file), base::MemoryMappedFile::Region::kWholeFile); 99 std::move(pak_file), base::MemoryMappedFile::Region::kWholeFile);
90 ui::ResourceBundle::GetSharedInstance().AddDataPackFromFile( 100 ui::ResourceBundle::GetSharedInstance().AddDataPackFromFile(
91 std::move(pak_file_2), ui::SCALE_FACTOR_100P); 101 std::move(pak_file_2), ui::SCALE_FACTOR_100P);
92 if (!resource_file_200_.empty()) 102 if (!resource_file_200_.empty())
93 ui::ResourceBundle::GetSharedInstance().AddDataPackFromFile( 103 ui::ResourceBundle::GetSharedInstance().AddDataPackFromFile(
94 loader.TakeFile(resource_file_200_), ui::SCALE_FACTOR_200P); 104 loader.TakeFile(resource_file_200_), ui::SCALE_FACTOR_200P);
95
96 // Initialize the skia font code to go ask fontconfig underneath.
97 #if defined(OS_LINUX)
98 font_loader_ = sk_make_sp<font_service::FontLoader>(connector);
99 SkFontConfigInterface::SetGlobal(font_loader_.get());
100 #endif
101
102 // There is a bunch of static state in gfx::Font, by running this now,
103 // before any other apps load, we ensure all the state is set up.
104 gfx::Font();
105 } 105 }
106 106
107 } // namespace views 107 } // namespace views
OLDNEW
« chrome/app/mash/mash_runner.cc ('K') | « chrome/app/mash/mash_runner.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698