void ensureOriginalZoomFactor(FrameView* frameView) { if (m_originalZoomFactor) return; m_webView->setPageScaleFactor(1, WebPoint()); m_webView->setZoomLevel(false, 0); WebSize scaledEmulatedSize = scaledEmulatedFrameSize(frameView); m_originalZoomFactor = static_cast<double>(scaledEmulatedSize.width) / frameView->contentsWidth(); }
void autoZoomPageToFitWidth(Frame* frame) { if (!frame) return; frame->setTextZoomFactor(m_webView->emulatedTextZoomFactor()); WebSize scaledFrameSize = scaledEmulatedFrameSize(frame->view()); ensureOriginalZoomFactor(frame->view()); double sizeRatio = static_cast<double>(scaledFrameSize.width) / m_emulatedFrameSize.width; frame->setPageAndTextZoomFactors(sizeRatio * m_originalZoomFactor, m_webView->emulatedTextZoomFactor()); Document* doc = frame->document(); doc->styleResolverChanged(RecalcStyleImmediately); doc->updateLayout(); }
void applySizeOverrideInternal(FrameView* frameView, FitWindowFlag fitWindowFlag) { WebSize scrollbarDimensions = forcedScrollbarDimensions(frameView); WebSize effectiveEmulatedSize = (fitWindowFlag == FitWindowAllowed) ? scaledEmulatedFrameSize(frameView) : m_emulatedFrameSize; int overrideWidth = effectiveEmulatedSize.width + scrollbarDimensions.width; int overrideHeight = effectiveEmulatedSize.height + scrollbarDimensions.height; if (IntSize(overrideWidth, overrideHeight) != frameView->size()) frameView->resize(overrideWidth, overrideHeight); Document* doc = frameView->frame()->document(); doc->styleResolverChanged(RecalcStyleImmediately); doc->updateLayout(); }