Color RenderThemeChromiumWin::platformInactiveSelectionBackgroundColor() const { if (isRunningLayoutTest()) return Color(0x99, 0x99, 0x99); // Medium gray. COLORREF color = GetSysColor(COLOR_GRAYTEXT); return Color(GetRValue(color), GetGValue(color), GetBValue(color), 0xff); }
FontPlatformData FontCustomPlatformData::fontPlatformData(float size, bool bold, bool italic, FontOrientation orientation, FontWidthVariant) { ASSERT(m_fontReference); LOGFONT logFont; // m_name comes from createUniqueFontName, which, in turn, gets // it from base64-encoded uuid (128-bit). So, m_name // can never be longer than LF_FACESIZE (32). if (m_name.length() + 1 >= LF_FACESIZE) { ASSERT_NOT_REACHED(); return FontPlatformData(); } unsigned len = m_name.copyTo(logFont.lfFaceName, 0, LF_FACESIZE - 1); logFont.lfFaceName[len] = '\0'; // FIXME: almost identical to FillLogFont in FontCacheWin.cpp. // Need to refactor. logFont.lfHeight = -static_cast<int>(size); logFont.lfWidth = 0; logFont.lfEscapement = 0; logFont.lfOrientation = 0; logFont.lfUnderline = false; logFont.lfStrikeOut = false; logFont.lfCharSet = DEFAULT_CHARSET; logFont.lfOutPrecision = OUT_TT_ONLY_PRECIS; logFont.lfQuality = isRunningLayoutTest() ? NONANTIALIASED_QUALITY : DEFAULT_QUALITY; // Honor user's desktop settings. logFont.lfPitchAndFamily = DEFAULT_PITCH | FF_DONTCARE; logFont.lfItalic = italic; logFont.lfWeight = bold ? FW_BOLD : FW_DONTCARE; HFONT hfont = CreateFontIndirect(&logFont); return FontPlatformData(hfont, size, orientation); }
void FullscreenController::enterFullScreenForElement(WebCore::Element* element) { // We are already transitioning to fullscreen for a different element. if (m_provisionalFullScreenElement) { m_provisionalFullScreenElement = element; return; } // We are already in fullscreen mode. if (m_fullScreenFrame) { m_provisionalFullScreenElement = element; willEnterFullScreen(); didEnterFullScreen(); return; } if (RuntimeEnabledFeatures::overlayFullscreenVideoEnabled() && element && element->isMediaElement() // FIXME: There is no embedder-side handling in layout test mode. && !isRunningLayoutTest()) { HTMLMediaElement* mediaElement = toHTMLMediaElement(element); if (mediaElement->player() && mediaElement->player()->canShowFullscreenOverlay()) { mediaElement->player()->showFullscreenOverlay(); m_provisionalFullScreenElement = element; return; } } // We need to transition to fullscreen mode. if (WebViewClient* client = m_webViewImpl->client()) { if (client->enterFullScreen()) m_provisionalFullScreenElement = element; } }
void FontPlatformData::querySystemForRenderStyle(bool useSkiaSubpixelPositioning) { getRenderStyleForStrike(m_family.data(), (((int)m_textSize) << 2) | (m_typeface->style() & 3)); // Fix FontRenderStyle::NoPreference to actual styles. if (m_style.useAntiAlias == FontRenderStyle::NoPreference) m_style.useAntiAlias = useSkiaAntiAlias; if (!m_style.useHinting) m_style.hintStyle = SkPaint::kNo_Hinting; else if (m_style.useHinting == FontRenderStyle::NoPreference) m_style.hintStyle = skiaHinting; if (m_style.useBitmaps == FontRenderStyle::NoPreference) m_style.useBitmaps = useSkiaBitmaps; if (m_style.useAutoHint == FontRenderStyle::NoPreference) m_style.useAutoHint = useSkiaAutoHint; if (m_style.useAntiAlias == FontRenderStyle::NoPreference) m_style.useAntiAlias = useSkiaAntiAlias; if (m_style.useSubpixelRendering == FontRenderStyle::NoPreference) m_style.useSubpixelRendering = useSkiaSubpixelRendering; // TestRunner specifically toggles the subpixel positioning flag. if (m_style.useSubpixelPositioning == FontRenderStyle::NoPreference || isRunningLayoutTest()) m_style.useSubpixelPositioning = useSkiaSubpixelPositioning; }
static int computePaintTextFlags(const LOGFONT& lf) { int textFlags = 0; switch (lf.lfQuality) { case NONANTIALIASED_QUALITY: textFlags = 0; break; case ANTIALIASED_QUALITY: textFlags = SkPaint::kAntiAlias_Flag; break; case CLEARTYPE_QUALITY: textFlags = (SkPaint::kAntiAlias_Flag | SkPaint::kLCDRenderText_Flag); break; default: textFlags = getDefaultGDITextFlags(); break; } // only allow features that SystemParametersInfo allows textFlags &= getDefaultGDITextFlags(); /* * FontPlatformData(...) will read our logfont, and try to honor the the lfQuality * setting (computing the corresponding SkPaint flags for AA and LCD). However, it * will limit the quality based on its query of SPI_GETFONTSMOOTHING. This could mean * we end up drawing the text in BW, even though our lfQuality requested antialiasing. * * Many web-fonts are so poorly hinted that they are terrible to read when drawn in BW. * In these cases, we have decided to FORCE these fonts to be drawn with at least grayscale AA, * even when the System (getDefaultGDITextFlags) tells us to draw only in BW. */ if (isWebFont(lf) && !isRunningLayoutTest()) textFlags |= SkPaint::kAntiAlias_Flag; return textFlags; }
void FullscreenController::didEnterFullScreen() { if (!m_fullScreenFrame) return; if (Document* doc = m_fullScreenFrame->document()) { if (FullscreenElementStack::isFullScreen(*doc)) { if (!m_exitFullscreenPageScaleFactor) { m_exitFullscreenPageScaleFactor = m_webViewImpl->pageScaleFactor(); m_exitFullscreenScrollOffset = m_webViewImpl->mainFrame()->scrollOffset(); m_exitFullscreenPinchViewportOffset = m_webViewImpl->pinchViewportOffset(); m_webViewImpl->setPageScaleFactor(1.0f); m_webViewImpl->setMainFrameScrollOffset(IntPoint()); m_webViewImpl->setPinchViewportOffset(FloatPoint()); } FullscreenElementStack::from(*doc).webkitDidEnterFullScreenForElement(0); if (RuntimeEnabledFeatures::overlayFullscreenVideoEnabled()) { Element* element = FullscreenElementStack::currentFullScreenElementFrom(*doc); ASSERT(element); if (isHTMLMediaElement(*element)) { HTMLMediaElement* mediaElement = toHTMLMediaElement(element); if (mediaElement->webMediaPlayer() && mediaElement->webMediaPlayer()->canEnterFullscreen() // FIXME: There is no embedder-side handling in layout test mode. && !isRunningLayoutTest()) { mediaElement->webMediaPlayer()->enterFullscreen(); } if (m_webViewImpl->layerTreeView()) m_webViewImpl->layerTreeView()->setHasTransparentBackground(true); } } } } }
IntSize ScrollbarThemeChromiumWin::buttonSize(ScrollbarThemeClient* scrollbar) { // Our desired rect is essentially thickness by thickness. // Our actual rect will shrink to half the available space when we have < 2 // times thickness pixels left. This allows the scrollbar to scale down // and function even at tiny sizes. int thickness = scrollbarThickness(scrollbar->controlSize()); // In layout test mode, we force the button "girth" (i.e., the length of // the button along the axis of the scrollbar) to be a fixed size. // FIXME: This is retarded! scrollbarThickness is already fixed in layout // test mode so that should be enough to result in repeatable results, but // preserving this hack avoids having to rebaseline pixel tests. const int kLayoutTestModeGirth = 17; int girth = isRunningLayoutTest() ? kLayoutTestModeGirth : thickness; if (scrollbar->orientation() == HorizontalScrollbar) { int width = scrollbar->width() < 2 * girth ? scrollbar->width() / 2 : girth; return IntSize(width, thickness); } int height = scrollbar->height() < 2 * girth ? scrollbar->height() / 2 : girth; return IntSize(thickness, height); }
Color RenderThemeChromiumWin::platformActiveSelectionBackgroundColor() const { if (isRunningLayoutTest()) return Color(0x00, 0x00, 0xff); // Royal blue. COLORREF color = GetSysColor(COLOR_HIGHLIGHT); return Color(GetRValue(color), GetGValue(color), GetBValue(color), 0xff); }
Color RenderThemeChromiumWin::platformActiveSelectionForegroundColor() const { if (isRunningLayoutTest()) return Color(0xff, 0xff, 0xcc); // Pale yellow. COLORREF color = GetSysColor(COLOR_HIGHLIGHTTEXT); return Color(GetRValue(color), GetGValue(color), GetBValue(color), 0xff); }
Color RenderThemeChromiumAndroid::systemColor(CSSValueID cssValueId) const { if (isRunningLayoutTest() && cssValueId == CSSValueButtonface) { // Match Linux button color in layout tests. static const Color linuxButtonGrayColor(0xffdddddd); return linuxButtonGrayColor; } return RenderTheme::systemColor(cssValueId); }
double RenderThemeChromiumSkia::caretBlinkInterval() const { // Disable the blinking caret in layout test mode, as it introduces // a race condition for the pixel tests. http://b/1198440 if (isRunningLayoutTest()) return 0; return caretBlinkIntervalInternal(); }
Color RenderThemeChromiumWin::systemColor(int cssValueId) const { int sysColorIndex = cssValueIdToSysColorIndex(cssValueId); if (isRunningLayoutTest() || (sysColorIndex == -1)) return RenderTheme::systemColor(cssValueId); COLORREF color = GetSysColor(sysColorIndex); return Color(GetRValue(color), GetGValue(color), GetBValue(color)); }
int ScrollbarThemeChromiumWin::scrollbarThickness(ScrollbarControlSize controlSize) { static int thickness; if (!thickness) { if (isRunningLayoutTest()) return kMacScrollbarSize[controlSize]; thickness = GetSystemMetrics(SM_CXVSCROLL); } return thickness; }
int ScrollbarThemeWin::scrollbarThickness(ScrollbarControlSize controlSize) { static int thickness; if (!thickness) { if (isRunningLayoutTest()) return kMacScrollbarSize[controlSize]; thickness = IntSize(WebKit::Platform::current()->themeEngine()->getSize(SBP_ARROWBTN)).width(); } return thickness; }
void RenderThemeChromiumAndroid::adjustInnerSpinButtonStyle(RenderStyle* style, Element*) const { if (isRunningLayoutTest()) { // Match Linux spin button style in layout tests. // FIXME: Consider removing the conditional if a future Android theme matches this. IntSize size = blink::Platform::current()->themeEngine()->getSize(blink::WebThemeEngine::PartInnerSpinButton); style->setWidth(Length(size.width(), Fixed)); style->setMinWidth(Length(size.width(), Fixed)); } }
static int computePaintTextFlags(String fontFamilyName) { if (isRunningLayoutTest()) return isFontSmoothingEnabledForTest() ? SkPaint::kAntiAlias_Flag : 0; int textFlags = getSystemTextFlags(); // Many web-fonts are so poorly hinted that they are terrible to read when drawn in BW. // In these cases, we have decided to FORCE these fonts to be drawn with at least grayscale AA, // even when the System (getSystemTextFlags) tells us to draw only in BW. if (isWebFont(fontFamilyName)) textFlags |= SkPaint::kAntiAlias_Flag; return textFlags; }
void FullscreenController::exitFullScreenForElement(WebCore::Element* element) { // The client is exiting full screen, so don't send a notification. if (m_isCancelingFullScreen) return; if (RuntimeEnabledFeatures::overlayFullscreenVideoEnabled() && element && element->isMediaElement() // FIXME: There is no embedder-side handling in layout test mode. && !isRunningLayoutTest()) { HTMLMediaElement* mediaElement = toHTMLMediaElement(element); if (mediaElement->player()) mediaElement->player()->hideFullscreenOverlay(); return; } if (WebViewClient* client = m_webViewImpl->client()) client->exitFullScreen(); }
static void FillLogFont(const FontDescription& fontDescription, LOGFONT* winfont) { // The size here looks unusual. The negative number is intentional. // Unlike WebKit trunk, we don't multiply the size by 32. That seems to be // some kind of artifact of their CG backend, or something. winfont->lfHeight = -fontDescription.computedPixelSize(); winfont->lfWidth = 0; winfont->lfEscapement = 0; winfont->lfOrientation = 0; winfont->lfUnderline = false; winfont->lfStrikeOut = false; winfont->lfCharSet = DEFAULT_CHARSET; winfont->lfOutPrecision = OUT_TT_ONLY_PRECIS; winfont->lfQuality = isRunningLayoutTest() ? NONANTIALIASED_QUALITY : DEFAULT_QUALITY; // Honor user's desktop settings. winfont->lfPitchAndFamily = DEFAULT_PITCH | FF_DONTCARE; winfont->lfItalic = fontDescription.italic(); winfont->lfWeight = toGDIFontWeight(fontDescription.weight()); }
void FontPlatformData::setupPaint(SkPaint* paint, GraphicsContext*) const { paint->setAntiAlias(m_style.useAntiAlias); paint->setHinting(static_cast<SkPaint::Hinting>(m_style.hintStyle)); paint->setEmbeddedBitmapText(m_style.useBitmaps); paint->setAutohinted(m_style.useAutoHint); if (m_style.useAntiAlias) paint->setLCDRenderText(m_style.useSubpixelRendering); // TestRunner specifically toggles the subpixel positioning flag. if (RuntimeEnabledFeatures::subpixelFontScalingEnabled() && !isRunningLayoutTest()) paint->setSubpixelText(true); else paint->setSubpixelText(m_style.useSubpixelPositioning); const float ts = m_textSize >= 0 ? m_textSize : 12; paint->setTextSize(SkFloatToScalar(ts)); paint->setTypeface(m_typeface.get()); paint->setFakeBoldText(m_fakeBold); paint->setTextSkewX(m_fakeItalic ? -SK_Scalar1 / 4 : 0); }
static int menuListButtonWidth() { static int width = isRunningLayoutTest() ? kStandardMenuListButtonWidth : GetSystemMetrics(SM_CXVSCROLL); return width; }
static bool useMockTheme() { return isRunningLayoutTest(); }
static int menuListButtonWidth() { static int width = isRunningLayoutTest() ? kStandardMenuListButtonWidth : IntSize(WebKit::Platform::current()->themeEngine()->getSize(SBP_ARROWBTN)).width(); return width; }