// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_UTILITY_FONT_CACHE_HANDLER_WIN_H_ #define CHROME_UTILITY_FONT_CACHE_HANDLER_WIN_H_ #include "base/files/file_path.h" #include "base/memory/ref_counted.h" #include "base/memory/scoped_ptr.h" #include "chrome/utility/utility_message_handler.h" namespace base { class TaskRunner; class Thread; } // Handles requests to build a static direct write font cache. Must be invoked // in a non-sandboxed utility process. We build static font cache in utility // process as it is time consuming as well as crash prone thing. We already // have fall back of loading fonts from system fonts directory in place, so even // if we fail to build static cache in utility process, chrome will still // continue to run as is. class FontCacheHandler : public UtilityMessageHandler { public: FontCacheHandler(); ~FontCacheHandler() override; // IPC::Listener implementation bool OnMessageReceived(const IPC::Message& message) override; private: void OnBuildFontCache(const base::FilePath& full_path); void StartBuildingFontCache(const base::FilePath& full_path); void Cleanup(); scoped_refptr utility_task_runner_; // Thread that caching process runs on, while FontCacheHandler handles // messages from the browser process. scoped_ptr cache_thread_; DISALLOW_COPY_AND_ASSIGN(FontCacheHandler); }; #endif // CHROME_UTILITY_FONT_CACHE_HANDLER_WIN_H_