From 85868943556467ed34f24df5556a90ed9968fccc Mon Sep 17 00:00:00 2001 From: "mmaxfield@apple.com" Date: Thu, 30 Oct 2014 21:17:30 +0000 Subject: [PATCH] Migrate ComplexTextControllerCoreText to use SPI instead of WKSI https://bugs.webkit.org/show_bug.cgi?id=138228 Reviewed by Simon Fraser. No new tests because there is no behavior change. * WebCore.xcodeproj/project.pbxproj: * platform/graphics/mac/ComplexTextControllerCoreText.mm: (WebCore::ComplexTextController::ComplexTextRun::ComplexTextRun): (WebCore::ComplexTextController::collectComplexTextRunsForCharacters): * platform/spi/cocoa/CoreTextSPI.h: Added. git-svn-id: https://svn.webkit.org/repository/webkit/trunk@175379 268f45cc-cd09-0410-ab3c-d52691b4dbfc --- Source/WebCore/ChangeLog | 15 ++++++ .../WebCore/WebCore.xcodeproj/project.pbxproj | 2 + .../mac/ComplexTextControllerCoreText.mm | 7 +-- .../WebCore/platform/spi/cocoa/CoreTextSPI.h | 46 +++++++++++++++++++ 4 files changed, 67 insertions(+), 3 deletions(-) create mode 100644 Source/WebCore/platform/spi/cocoa/CoreTextSPI.h diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog index 0958bdfad236..b15902791d35 100644 --- a/Source/WebCore/ChangeLog +++ b/Source/WebCore/ChangeLog @@ -1,3 +1,18 @@ +2014-10-30 Myles C. Maxfield + + Migrate ComplexTextControllerCoreText to use SPI instead of WKSI + https://bugs.webkit.org/show_bug.cgi?id=138228 + + Reviewed by Simon Fraser. + + No new tests because there is no behavior change. + + * WebCore.xcodeproj/project.pbxproj: + * platform/graphics/mac/ComplexTextControllerCoreText.mm: + (WebCore::ComplexTextController::ComplexTextRun::ComplexTextRun): + (WebCore::ComplexTextController::collectComplexTextRunsForCharacters): + * platform/spi/cocoa/CoreTextSPI.h: Added. + 2014-10-30 Eric Carlson Add diagnostic logging to track page loads. diff --git a/Source/WebCore/WebCore.xcodeproj/project.pbxproj b/Source/WebCore/WebCore.xcodeproj/project.pbxproj index a29b9c30c93b..e7db10f54958 100644 --- a/Source/WebCore/WebCore.xcodeproj/project.pbxproj +++ b/Source/WebCore/WebCore.xcodeproj/project.pbxproj @@ -7956,6 +7956,7 @@ 1C4C8F000AD85D87009475CE /* DeleteButtonController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DeleteButtonController.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; 1C4C8F630AD8655D009475CE /* DeleteButton.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DeleteButton.cpp; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; 1C4C8F640AD8655D009475CE /* DeleteButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DeleteButton.h; sourceTree = ""; tabWidth = 8; usesTabs = 0; }; + 1C5E980F1A02CEFA002DB55F /* CoreTextSPI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CoreTextSPI.h; sourceTree = ""; }; 1C81B9560E97330800266E07 /* InspectorController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorController.h; sourceTree = ""; }; 1C81B9570E97330800266E07 /* InspectorController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorController.cpp; sourceTree = ""; }; 1C81B9580E97330800266E07 /* InspectorClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorClient.h; sourceTree = ""; }; @@ -16267,6 +16268,7 @@ 2DDB97F319F9AECA002025D8 /* NSExtensionSPI.h */, 653EF83819A043AE0052202C /* NSURLFileTypeMappingsSPI.h */, 1CF7E26E19D881EF00DD8F98 /* CGFontUnicodeSupportSPI.h */, + 1C5E980F1A02CEFA002DB55F /* CoreTextSPI.h */, ); path = cocoa; sourceTree = ""; diff --git a/Source/WebCore/platform/graphics/mac/ComplexTextControllerCoreText.mm b/Source/WebCore/platform/graphics/mac/ComplexTextControllerCoreText.mm index fea48df91d9a..622866509463 100644 --- a/Source/WebCore/platform/graphics/mac/ComplexTextControllerCoreText.mm +++ b/Source/WebCore/platform/graphics/mac/ComplexTextControllerCoreText.mm @@ -26,6 +26,7 @@ #include "ComplexTextController.h" +#include "CoreTextSPI.h" #include "Font.h" #include "FontCache.h" #include "TextRun.h" @@ -98,7 +99,7 @@ ComplexTextController::ComplexTextRun::ComplexTextRun(CTRunRef ctRun, const Simp , m_stringLength(stringLength) , m_indexBegin(runRange.location) , m_indexEnd(runRange.location + runRange.length) - , m_initialAdvance(wkCTRunGetInitialAdvance(ctRun)) + , m_initialAdvance(CTRunGetInitialAdvance(ctRun)) , m_isLTR(!(CTRunGetStatus(ctRun) & kCTRunStatusRightToLeft)) , m_isMonotonic(true) { @@ -224,13 +225,13 @@ void ComplexTextController::collectComplexTextRunsForCharacters(const UChar* cp, static CFDictionaryRef rtlTypesetterOptions = CFDictionaryCreate(kCFAllocatorDefault, optionKeys, rtlOptionValues, WTF_ARRAY_LENGTH(optionKeys), &kCFCopyStringDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks); ProviderInfo info = { cp, length, stringAttributes.get() }; - RetainPtr typesetter = adoptCF(wkCreateCTTypesetterWithUniCharProviderAndOptions(&provideStringAndAttributes, 0, &info, m_run.ltr() ? ltrTypesetterOptions : rtlTypesetterOptions)); + RetainPtr typesetter = adoptCF(CTTypesetterCreateWithUniCharProviderAndOptions(&provideStringAndAttributes, 0, &info, m_run.ltr() ? ltrTypesetterOptions : rtlTypesetterOptions)); line = adoptCF(CTTypesetterCreateLine(typesetter.get(), CFRangeMake(0, 0))); } else { ProviderInfo info = { cp, length, stringAttributes.get() }; - line = adoptCF(wkCreateCTLineWithUniCharProvider(&provideStringAndAttributes, 0, &info)); + line = adoptCF(CTLineCreateWithUniCharProvider(&provideStringAndAttributes, nullptr, &info)); } m_coreTextLines.append(line.get()); diff --git a/Source/WebCore/platform/spi/cocoa/CoreTextSPI.h b/Source/WebCore/platform/spi/cocoa/CoreTextSPI.h new file mode 100644 index 000000000000..a7c65677eb2b --- /dev/null +++ b/Source/WebCore/platform/spi/cocoa/CoreTextSPI.h @@ -0,0 +1,46 @@ +/* + * Copyright (C) 2014 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef CoreTextSPI_h +#define CoreTextSPI_h + +#include + +#if USE(APPLE_INTERNAL_SDK) +#include +#endif + +typedef const UniChar* (*CTUniCharProviderCallback)(CFIndex stringIndex, CFIndex* charCount, CFDictionaryRef* attributes, void* refCon); +typedef void (*CTUniCharDisposeCallback)(const UniChar* chars, void* refCon); + +extern "C" { + +CGSize CTRunGetInitialAdvance(CTRunRef run); +CTLineRef CTLineCreateWithUniCharProvider(CTUniCharProviderCallback provide, CTUniCharDisposeCallback dispose, void* refCon); +CTTypesetterRef CTTypesetterCreateWithUniCharProviderAndOptions(CTUniCharProviderCallback provide, CTUniCharDisposeCallback dispose, void* refCon, CFDictionaryRef options); + +} + +#endif -- 2.36.0