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

Unified Diff: components/font_service/public/cpp/font_service_thread.cc

Issue 1276163002: Revert of Sandbox html_viewer on Linux. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 4 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 side-by-side diff with in-line comments
Download patch
Index: components/font_service/public/cpp/font_service_thread.cc
diff --git a/components/font_service/public/cpp/font_service_thread.cc b/components/font_service/public/cpp/font_service_thread.cc
deleted file mode 100644
index e7f2c89ee228ef3e08f738c36a9aba1cea5e675d..0000000000000000000000000000000000000000
--- a/components/font_service/public/cpp/font_service_thread.cc
+++ /dev/null
@@ -1,158 +0,0 @@
-// Copyright 2015 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.
-
-#include "components/font_service/public/cpp/font_service_thread.h"
-
-#include "base/bind.h"
-#include "base/files/file.h"
-#include "base/synchronization/waitable_event.h"
-#include "components/font_service/public/cpp/mapped_font_file.h"
-#include "mojo/common/message_pump_mojo.h"
-#include "mojo/platform_handle/platform_handle_functions.h"
-
-namespace font_service {
-namespace internal {
-
-namespace {
-const char kFontThreadName[] = "Font_Proxy_Thread";
-} // namespace
-
-FontServiceThread::FontServiceThread(FontServicePtr font_service)
- : base::Thread(kFontThreadName),
- font_service_info_(font_service.PassInterface().Pass()) {
- base::Thread::Options options;
- options.message_pump_factory =
- base::Bind(&mojo::common::MessagePumpMojo::Create);
- StartWithOptions(options);
-}
-
-bool FontServiceThread::MatchFamilyName(
- const char family_name[],
- SkTypeface::Style requested_style,
- SkFontConfigInterface::FontIdentity* out_font_identity,
- SkString* out_family_name,
- SkTypeface::Style* out_style) {
- DCHECK_NE(GetThreadId(), base::PlatformThread::CurrentId());
-
- bool out_valid = false;
- // This proxies to the other thread, which proxies to mojo. Only on the reply
- // from mojo do we return from this.
- base::WaitableEvent done_event(false, false);
- task_runner()->PostTask(
- FROM_HERE,
- base::Bind(&FontServiceThread::MatchFamilyNameImpl, this, &done_event,
- family_name, requested_style, &out_valid, out_font_identity,
- out_family_name, out_style));
- done_event.Wait();
-
- return out_valid;
-}
-
-scoped_refptr<MappedFontFile> FontServiceThread::OpenStream(
- const SkFontConfigInterface::FontIdentity& identity) {
- DCHECK_NE(GetThreadId(), base::PlatformThread::CurrentId());
-
- base::File stream_file;
- // This proxies to the other thread, which proxies to mojo. Only on the reply
- // from mojo do we return from this.
- base::WaitableEvent done_event(false, false);
- task_runner()->PostTask(FROM_HERE,
- base::Bind(&FontServiceThread::OpenStreamImpl, this,
- &done_event, &stream_file, identity.fID));
- done_event.Wait();
-
- if (!stream_file.IsValid()) {
- NOTREACHED();
- return nullptr;
- }
-
- // Converts the file to out internal type.
- scoped_refptr<MappedFontFile> mapped_font_file =
- new MappedFontFile(identity.fID);
- if (!mapped_font_file->Initialize(stream_file.Pass()))
- return nullptr;
-
- return mapped_font_file;
-}
-
-FontServiceThread::~FontServiceThread() {
- Stop();
-}
-
-void FontServiceThread::MatchFamilyNameImpl(
- base::WaitableEvent* done_event,
- const char family_name[],
- SkTypeface::Style requested_style,
- bool* out_valid,
- SkFontConfigInterface::FontIdentity* out_font_identity,
- SkString* out_family_name,
- SkTypeface::Style* out_style) {
- DCHECK_EQ(GetThreadId(), base::PlatformThread::CurrentId());
-
- font_service_->MatchFamilyName(
- mojo::String(family_name), static_cast<TypefaceStyle>(requested_style),
- base::Bind(&FontServiceThread::OnMatchFamilyNameComplete, this,
- done_event, out_valid, out_font_identity, out_family_name,
- out_style));
-}
-
-void FontServiceThread::OnMatchFamilyNameComplete(
- base::WaitableEvent* done_event,
- bool* out_valid,
- SkFontConfigInterface::FontIdentity* out_font_identity,
- SkString* out_family_name,
- SkTypeface::Style* out_style,
- FontIdentityPtr font_identity,
- mojo::String family_name,
- TypefaceStyle style) {
- DCHECK_EQ(GetThreadId(), base::PlatformThread::CurrentId());
-
- *out_valid = font_identity;
- if (font_identity) {
- out_font_identity->fID = font_identity->id;
- out_font_identity->fTTCIndex = font_identity->ttc_index;
- out_font_identity->fString = font_identity->str_representation.data();
- // TODO(erg): fStyle isn't set. This is rather odd, however it matches the
- // behaviour of the current Linux IPC version.
-
- *out_family_name = family_name.data();
- *out_style = static_cast<SkTypeface::Style>(style);
- }
-
- done_event->Signal();
-}
-
-void FontServiceThread::OpenStreamImpl(base::WaitableEvent* done_event,
- base::File* output_file,
- const uint32_t id_number) {
- DCHECK_EQ(GetThreadId(), base::PlatformThread::CurrentId());
-
- font_service_->OpenStream(
- id_number, base::Bind(&FontServiceThread::OnOpenStreamComplete, this,
- done_event, output_file));
-}
-
-void FontServiceThread::OnOpenStreamComplete(base::WaitableEvent* done_event,
- base::File* output_file,
- mojo::ScopedHandle handle) {
- if (handle.is_valid()) {
- MojoPlatformHandle platform_handle;
- CHECK(MojoExtractPlatformHandle(handle.release().value(),
- &platform_handle) == MOJO_RESULT_OK);
- *output_file = base::File(platform_handle).Pass();
- }
-
- done_event->Signal();
-}
-
-void FontServiceThread::Init() {
- font_service_.Bind(font_service_info_.Pass());
-}
-
-void FontServiceThread::CleanUp() {
- font_service_.reset();
-}
-
-} // namespace internal
-} // namespace font_service
« no previous file with comments | « components/font_service/public/cpp/font_service_thread.h ('k') | components/font_service/public/cpp/mapped_font_file.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698