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

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
« no previous file with comments | « chrome/app/mash/mash_runner.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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) {
84 // Resources may have already been initialized (e.g. when 'chrome --mash' is
85 // used to launch the current app).
74 if (ui::ResourceBundle::HasSharedInstance()) 86 if (ui::ResourceBundle::HasSharedInstance())
75 return; 87 return;
76 88
77 std::set<std::string> resource_paths({resource_file_}); 89 std::set<std::string> resource_paths({resource_file_});
78 if (!resource_file_200_.empty()) 90 if (!resource_file_200_.empty())
79 resource_paths.insert(resource_file_200_); 91 resource_paths.insert(resource_file_200_);
80 92
81 catalog::ResourceLoader loader; 93 catalog::ResourceLoader loader;
82 filesystem::mojom::DirectoryPtr directory; 94 filesystem::mojom::DirectoryPtr directory;
83 connector->ConnectToInterface("mojo:catalog", &directory); 95 connector->ConnectToInterface("mojo:catalog", &directory);
84 CHECK(loader.OpenFiles(std::move(directory), resource_paths)); 96 CHECK(loader.OpenFiles(std::move(directory), resource_paths));
85 ui::RegisterPathProvider(); 97 ui::RegisterPathProvider();
86 base::File pak_file = loader.TakeFile(resource_file_); 98 base::File pak_file = loader.TakeFile(resource_file_);
87 base::File pak_file_2 = pak_file.Duplicate(); 99 base::File pak_file_2 = pak_file.Duplicate();
88 ui::ResourceBundle::InitSharedInstanceWithPakFileRegion( 100 ui::ResourceBundle::InitSharedInstanceWithPakFileRegion(
89 std::move(pak_file), base::MemoryMappedFile::Region::kWholeFile); 101 std::move(pak_file), base::MemoryMappedFile::Region::kWholeFile);
90 ui::ResourceBundle::GetSharedInstance().AddDataPackFromFile( 102 ui::ResourceBundle::GetSharedInstance().AddDataPackFromFile(
91 std::move(pak_file_2), ui::SCALE_FACTOR_100P); 103 std::move(pak_file_2), ui::SCALE_FACTOR_100P);
92 if (!resource_file_200_.empty()) 104 if (!resource_file_200_.empty())
93 ui::ResourceBundle::GetSharedInstance().AddDataPackFromFile( 105 ui::ResourceBundle::GetSharedInstance().AddDataPackFromFile(
94 loader.TakeFile(resource_file_200_), ui::SCALE_FACTOR_200P); 106 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 } 107 }
106 108
107 } // namespace views 109 } // namespace views
OLDNEW
« no previous file with comments | « chrome/app/mash/mash_runner.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698