From cfd86b747d32ac22246a1aa908eaa720c63a88c1 Mon Sep 17 00:00:00 2001 From: Simon Hausmann Date: Wed, 7 Nov 2012 11:22:47 +0100 Subject: Imported WebKit commit 20271caf2e2c016d5cef40184cddeefeac4f1876 (http://svn.webkit.org/repository/webkit/trunk@133733) New snapshot that contains all previous fixes as well as build fix for latest QtMultimedia API changes. --- Source/WebKit/chromium/src/AssertMatchingEnums.cpp | 20 ++- Source/WebKit/chromium/src/ChromeClientImpl.cpp | 57 ++++---- Source/WebKit/chromium/src/ChromeClientImpl.h | 12 +- .../chromium/src/ColorChooserUIController.cpp | 6 +- .../WebKit/chromium/src/ColorChooserUIController.h | 6 +- .../chromium/src/ContextFeaturesClientImpl.cpp | 3 + Source/WebKit/chromium/src/DateTimeChooserImpl.cpp | 32 +++-- Source/WebKit/chromium/src/DateTimeChooserImpl.h | 12 +- .../WebKit/chromium/src/FrameLoaderClientImpl.cpp | 13 ++ Source/WebKit/chromium/src/FrameLoaderClientImpl.h | 4 + .../chromium/src/IDBDatabaseBackendProxy.cpp | 17 +++ .../WebKit/chromium/src/IDBDatabaseBackendProxy.h | 2 + .../chromium/src/IDBObjectStoreBackendProxy.cpp | 41 +++++- .../chromium/src/IDBObjectStoreBackendProxy.h | 9 +- .../chromium/src/IDBTransactionBackendProxy.cpp | 8 ++ .../chromium/src/IDBTransactionBackendProxy.h | 1 + Source/WebKit/chromium/src/InspectorClientImpl.cpp | 5 + Source/WebKit/chromium/src/InspectorClientImpl.h | 1 + Source/WebKit/chromium/src/LinkHighlight.cpp | 10 +- Source/WebKit/chromium/src/LinkHighlight.h | 3 +- Source/WebKit/chromium/src/LocalizedStrings.cpp | 54 ++++---- .../chromium/src/NonCompositedContentHost.cpp | 19 +-- .../WebKit/chromium/src/NonCompositedContentHost.h | 4 +- Source/WebKit/chromium/src/PageOverlay.cpp | 10 -- Source/WebKit/chromium/src/PageOverlay.h | 2 +- Source/WebKit/chromium/src/PlatformSupport.cpp | 80 ----------- .../WebKit/chromium/src/WebDevToolsAgentImpl.cpp | 35 +++-- Source/WebKit/chromium/src/WebFormElement.cpp | 7 + Source/WebKit/chromium/src/WebFrameImpl.cpp | 24 ++-- Source/WebKit/chromium/src/WebFrameImpl.h | 1 + Source/WebKit/chromium/src/WebHitTestResult.cpp | 22 +++ Source/WebKit/chromium/src/WebIDBCallbacksImpl.cpp | 1 + Source/WebKit/chromium/src/WebIDBDatabaseImpl.cpp | 16 +++ Source/WebKit/chromium/src/WebIDBDatabaseImpl.h | 2 + Source/WebKit/chromium/src/WebIDBMetadata.cpp | 6 +- .../WebKit/chromium/src/WebIDBObjectStoreImpl.cpp | 54 ++++++++ Source/WebKit/chromium/src/WebIDBObjectStoreImpl.h | 5 + .../WebKit/chromium/src/WebIDBTransactionImpl.cpp | 8 ++ Source/WebKit/chromium/src/WebIDBTransactionImpl.h | 3 +- .../chromium/src/WebInputEventConversion.cpp | 1 + Source/WebKit/chromium/src/WebPagePopupImpl.cpp | 14 +- Source/WebKit/chromium/src/WebRuntimeFeatures.cpp | 18 +++ Source/WebKit/chromium/src/WebSettingsImpl.cpp | 10 ++ Source/WebKit/chromium/src/WebSettingsImpl.h | 2 + Source/WebKit/chromium/src/WebViewImpl.cpp | 147 ++++++++++++++------- Source/WebKit/chromium/src/WebViewImpl.h | 10 +- Source/WebKit/chromium/src/js/devTools.css | 16 +++ .../chromium/src/mac/WebInputEventFactory.mm | 2 +- 48 files changed, 556 insertions(+), 279 deletions(-) (limited to 'Source/WebKit/chromium/src') diff --git a/Source/WebKit/chromium/src/AssertMatchingEnums.cpp b/Source/WebKit/chromium/src/AssertMatchingEnums.cpp index 95e8b607d..f3e7859ee 100644 --- a/Source/WebKit/chromium/src/AssertMatchingEnums.cpp +++ b/Source/WebKit/chromium/src/AssertMatchingEnums.cpp @@ -48,6 +48,9 @@ #include "FontSmoothingMode.h" #include "GeolocationError.h" #include "GeolocationPosition.h" +#if ENABLE(REQUEST_AUTOCOMPLETE) +#include "HTMLFormElement.h" +#endif #include "HTMLInputElement.h" #include "IDBCursor.h" #include "IDBDatabaseException.h" @@ -86,6 +89,9 @@ #include "WebFileError.h" #include "WebFileInfo.h" #include "WebFontDescription.h" +#if ENABLE(REQUEST_AUTOCOMPLETE) +#include "WebFormElement.h" +#endif #include "WebGeolocationError.h" #include "WebGeolocationPosition.h" #include "WebIDBCursor.h" @@ -153,6 +159,8 @@ COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityNotificationRowCountChanged, AXObje COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityNotificationRowCollapsed, AXObjectCache::AXRowCollapsed); COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityNotificationRowExpanded, AXObjectCache::AXRowExpanded); COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityNotificationInvalidStatusChanged, AXObjectCache::AXInvalidStatusChanged); +COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityNotificationTextChanged, AXObjectCache::AXTextChanged); +COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityNotificationAriaAttributeChanged, AXObjectCache::AXAriaAttributeChanged); COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleUnknown, UnknownRole); COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleButton, ButtonRole); @@ -260,6 +268,7 @@ COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleUserInterfaceTooltip, UserInter COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleToggleButton, ToggleButtonRole); COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleCanvas, CanvasRole); COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleLegend, LegendRole); +COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleSVGRoot, SVGRootRole); COMPILE_ASSERT_MATCHING_ENUM(WebApplicationCacheHost::Uncached, ApplicationCacheHost::UNCACHED); COMPILE_ASSERT_MATCHING_ENUM(WebApplicationCacheHost::Idle, ApplicationCacheHost::IDLE); @@ -617,8 +626,10 @@ COMPILE_ASSERT_MATCHING_ENUM(WebReferrerPolicyDefault, ReferrerPolicyDefault); COMPILE_ASSERT_MATCHING_ENUM(WebReferrerPolicyNever, ReferrerPolicyNever); COMPILE_ASSERT_MATCHING_ENUM(WebReferrerPolicyOrigin, ReferrerPolicyOrigin); -COMPILE_ASSERT_MATCHING_ENUM(WebContentSecurityPolicyTypeReportOnly, ContentSecurityPolicy::ReportOnly); -COMPILE_ASSERT_MATCHING_ENUM(WebContentSecurityPolicyTypeEnforcePolicy, ContentSecurityPolicy::EnforcePolicy); +COMPILE_ASSERT_MATCHING_ENUM(WebContentSecurityPolicyTypeReportStableDirectives, ContentSecurityPolicy::ReportStableDirectives); +COMPILE_ASSERT_MATCHING_ENUM(WebContentSecurityPolicyTypeEnforceStableDirectives, ContentSecurityPolicy::EnforceStableDirectives); +COMPILE_ASSERT_MATCHING_ENUM(WebContentSecurityPolicyTypeReportAllDirectives, ContentSecurityPolicy::ReportAllDirectives); +COMPILE_ASSERT_MATCHING_ENUM(WebContentSecurityPolicyTypeEnforceAllDirectives, ContentSecurityPolicy::EnforceAllDirectives); COMPILE_ASSERT_MATCHING_ENUM(WebURLResponse::Unknown, ResourceResponse::Unknown); COMPILE_ASSERT_MATCHING_ENUM(WebURLResponse::HTTP_0_9, ResourceResponse::HTTP_0_9); @@ -628,3 +639,8 @@ COMPILE_ASSERT_MATCHING_ENUM(WebURLResponse::HTTP_1_1, ResourceResponse::HTTP_1_ COMPILE_ASSERT_MATCHING_ENUM(WebMediaPlayer::CORSModeUnspecified, MediaPlayerClient::Unspecified); COMPILE_ASSERT_MATCHING_ENUM(WebMediaPlayer::CORSModeAnonymous, MediaPlayerClient::Anonymous); COMPILE_ASSERT_MATCHING_ENUM(WebMediaPlayer::CORSModeUseCredentials, MediaPlayerClient::UseCredentials); + +#if ENABLE(REQUEST_AUTOCOMPLETE) +COMPILE_ASSERT_MATCHING_ENUM(WebFormElement::AutocompleteResultSuccess, HTMLFormElement::AutocompleteResultSuccess); +COMPILE_ASSERT_MATCHING_ENUM(WebFormElement::AutocompleteResultError, HTMLFormElement::AutocompleteResultError); +#endif diff --git a/Source/WebKit/chromium/src/ChromeClientImpl.cpp b/Source/WebKit/chromium/src/ChromeClientImpl.cpp index 9d8a656bd..94959380a 100644 --- a/Source/WebKit/chromium/src/ChromeClientImpl.cpp +++ b/Source/WebKit/chromium/src/ChromeClientImpl.cpp @@ -42,6 +42,7 @@ #include "Console.h" #include "Cursor.h" #include "DatabaseTracker.h" +#include "DateTimeChooser.h" #include "DateTimeChooserImpl.h" #include "Document.h" #include "DocumentLoader.h" @@ -265,17 +266,13 @@ Page* ChromeClientImpl::createWindow( return newView->page(); } -static inline bool currentEventShouldCauseBackgroundTab(const WebInputEvent* inputEvent) +static inline void updatePolicyForEvent(const WebInputEvent* inputEvent, WebNavigationPolicy* policy) { - if (!inputEvent) - return false; - - if (inputEvent->type != WebInputEvent::MouseUp) - return false; + if (!inputEvent || inputEvent->type != WebInputEvent::MouseUp) + return; const WebMouseEvent* mouseEvent = static_cast(inputEvent); - WebNavigationPolicy policy; unsigned short buttonNumber; switch (mouseEvent->button) { case WebMouseEvent::ButtonLeft: @@ -288,17 +285,14 @@ static inline bool currentEventShouldCauseBackgroundTab(const WebInputEvent* inp buttonNumber = 2; break; default: - return false; + return; } bool ctrl = mouseEvent->modifiers & WebMouseEvent::ControlKey; bool shift = mouseEvent->modifiers & WebMouseEvent::ShiftKey; bool alt = mouseEvent->modifiers & WebMouseEvent::AltKey; bool meta = mouseEvent->modifiers & WebMouseEvent::MetaKey; - if (!WebViewImpl::navigationPolicyFromMouseEvent(buttonNumber, ctrl, shift, alt, meta, &policy)) - return false; - - return policy == WebNavigationPolicyNewBackgroundTab; + WebViewImpl::navigationPolicyFromMouseEvent(buttonNumber, ctrl, shift, alt, meta, policy); } WebNavigationPolicy ChromeClientImpl::getNavigationPolicy() @@ -315,8 +309,8 @@ WebNavigationPolicy ChromeClientImpl::getNavigationPolicy() WebNavigationPolicy policy = WebNavigationPolicyNewForegroundTab; if (asPopup) policy = WebNavigationPolicyNewPopup; - if (currentEventShouldCauseBackgroundTab(WebViewImpl::currentInputEvent())) - policy = WebNavigationPolicyNewBackgroundTab; + updatePolicyForEvent(WebViewImpl::currentInputEvent(), &policy); + return policy; } @@ -502,15 +496,7 @@ void ChromeClientImpl::invalidateContentsAndRootView(const IntRect& updateRect, { if (updateRect.isEmpty()) return; -#if USE(ACCELERATED_COMPOSITING) - if (!m_webView->isAcceleratedCompositingActive()) { -#endif - if (m_webView->client()) - m_webView->client()->didInvalidateRect(updateRect); -#if USE(ACCELERATED_COMPOSITING) - } else - m_webView->invalidateRootLayerRect(updateRect); -#endif + m_webView->invalidateRect(updateRect); } void ChromeClientImpl::invalidateContentsForSlowScroll(const IntRect& updateRect, bool immediate) @@ -629,13 +615,6 @@ void ChromeClientImpl::dispatchViewportPropertiesDidChange(const ViewportArgumen if (!m_webView->settings()->viewportEnabled() || !m_webView->isFixedLayoutModeEnabled() || !m_webView->client() || !m_webView->page()) return; - ViewportArguments args; - if (arguments == args) { - // Default viewport arguments passed in. This is a signal to reset the viewport. - args.width = ViewportArguments::ValueDesktopWidth; - } else - args = arguments; - FrameView* frameView = m_webView->mainFrameImpl()->frameView(); int dpi = screenHorizontalDPI(frameView); ASSERT(dpi > 0); @@ -650,7 +629,7 @@ void ChromeClientImpl::dispatchViewportPropertiesDidChange(const ViewportArgumen float devicePixelRatio = dpi / ViewportArguments::deprecatedTargetDPI; // Call the common viewport computing logic in ViewportArguments.cpp. ViewportAttributes computed = computeViewportAttributes( - args, settings->layoutFallbackWidth(), deviceRect.width, deviceRect.height, + arguments, settings->layoutFallbackWidth(), deviceRect.width, deviceRect.height, devicePixelRatio, IntSize(deviceRect.width, deviceRect.height)); restrictScaleFactorToInitialScaleIfNotUserScalable(computed); @@ -707,10 +686,15 @@ PassOwnPtr ChromeClientImpl::createWebColorChooser(WebColorChoo } #endif -#if ENABLE(CALENDAR_PICKER) -PassOwnPtr ChromeClientImpl::openDateTimeChooser(WebCore::DateTimeChooserClient* pickerClient, const WebCore::DateTimeChooserParameters& parameters) +#if ENABLE(DATE_AND_TIME_INPUT_TYPES) +PassRefPtr ChromeClientImpl::openDateTimeChooser(DateTimeChooserClient* pickerClient, const DateTimeChooserParameters& parameters) { - return adoptPtr(new DateTimeChooserImpl(this, pickerClient, parameters)); +#if ENABLE(INPUT_MULTIPLE_FIELDS_UI) + return DateTimeChooserImpl::create(this, pickerClient, parameters); +#else + notImplemented(); + return PassRefPtr(); +#endif } #endif @@ -903,6 +887,11 @@ void ChromeClientImpl::postAccessibilityNotification(AccessibilityObject* obj, A m_webView->client()->postAccessibilityNotification(WebAccessibilityObject(obj), toWebAccessibilityNotification(notification)); } +WebKit::WebScreenInfo ChromeClientImpl::screenInfo() +{ + return m_webView->client()->screenInfo(); +} + bool ChromeClientImpl::paintCustomOverhangArea(GraphicsContext* context, const IntRect& horizontalOverhangArea, const IntRect& verticalOverhangArea, const IntRect& dirtyRect) { Frame* frame = m_webView->mainFrameImpl()->frame(); diff --git a/Source/WebKit/chromium/src/ChromeClientImpl.h b/Source/WebKit/chromium/src/ChromeClientImpl.h index 4a609dadd..77084f801 100644 --- a/Source/WebKit/chromium/src/ChromeClientImpl.h +++ b/Source/WebKit/chromium/src/ChromeClientImpl.h @@ -60,10 +60,11 @@ class WebColorChooser; class WebColorChooserClient; class WebViewImpl; struct WebCursorInfo; +struct WebScreenInfo; struct WebPopupMenuInfo; // Handles window-level notifications from WebCore on behalf of a WebView. -class ChromeClientImpl : public WebCore::ChromeClientChromium { +class ChromeClientImpl : public WebCore::ChromeClientChromium, public WebCore::PageClientChromium { public: explicit ChromeClientImpl(WebViewImpl* webView); virtual ~ChromeClientImpl(); @@ -123,7 +124,7 @@ public: const WebCore::IntRect& clipRect); virtual WebCore::IntPoint screenToRootView(const WebCore::IntPoint&) const; virtual WebCore::IntRect rootViewToScreen(const WebCore::IntRect&) const; - virtual PlatformPageClient platformPageClient() const { return 0; } + virtual PlatformPageClient platformPageClient() const { return PlatformPageClient(this); } virtual void contentsSizeChanged(WebCore::Frame*, const WebCore::IntSize&) const; virtual void layoutUpdated(WebCore::Frame*) const; virtual void scrollRectIntoView( @@ -146,8 +147,8 @@ public: virtual PassOwnPtr createColorChooser(WebCore::ColorChooserClient*, const WebCore::Color&) OVERRIDE; PassOwnPtr createWebColorChooser(WebColorChooserClient*, const WebColor&); #endif -#if ENABLE(CALENDAR_PICKER) - virtual PassOwnPtr openDateTimeChooser(WebCore::DateTimeChooserClient*, const WebCore::DateTimeChooserParameters&) OVERRIDE; +#if ENABLE(DATE_AND_TIME_INPUT_TYPES) + virtual PassRefPtr openDateTimeChooser(WebCore::DateTimeChooserClient*, const WebCore::DateTimeChooserParameters&) OVERRIDE; #endif virtual void runOpenPanel(WebCore::Frame*, PassRefPtr); virtual void loadIconForFiles(const Vector&, WebCore::FileIconLoader*); @@ -194,6 +195,9 @@ public: virtual void popupClosed(WebCore::PopupContainer* popupContainer); virtual void postAccessibilityNotification(WebCore::AccessibilityObject*, WebCore::AXObjectCache::AXNotification); + // PageClientChromium methods: + virtual WebScreenInfo screenInfo(); + // ChromeClientImpl: void setCursorForPlugin(const WebCursorInfo&); void setNewWindowNavigationPolicy(WebNavigationPolicy); diff --git a/Source/WebKit/chromium/src/ColorChooserUIController.cpp b/Source/WebKit/chromium/src/ColorChooserUIController.cpp index 330f59ce2..5789691e8 100644 --- a/Source/WebKit/chromium/src/ColorChooserUIController.cpp +++ b/Source/WebKit/chromium/src/ColorChooserUIController.cpp @@ -57,7 +57,7 @@ ColorChooserUIController::ColorChooserUIController(ChromeClientImpl* chromeClien : m_chromeClient(chromeClient) , m_client(client) , m_popup(0) - , m_localizer(Localizer::createDefault()) + , m_locale(Locale::createDefault()) { if (m_client->shouldShowSuggestions()) openPopup(); @@ -132,9 +132,9 @@ void ColorChooserUIController::writeDocument(DocumentWriter& writer) PagePopupClient::addString("\n", writer); } -Localizer& ColorChooserUIController::localizer() +Locale& ColorChooserUIController::locale() { - return *m_localizer; + return *m_locale; } void ColorChooserUIController::setValueAndClosePopup(int numValue, const String& stringValue) diff --git a/Source/WebKit/chromium/src/ColorChooserUIController.h b/Source/WebKit/chromium/src/ColorChooserUIController.h index 40c878b8e..60cecfe18 100644 --- a/Source/WebKit/chromium/src/ColorChooserUIController.h +++ b/Source/WebKit/chromium/src/ColorChooserUIController.h @@ -29,8 +29,8 @@ #if ENABLE(INPUT_TYPE_COLOR) #include "ColorChooser.h" -#include "Localizer.h" #include "PagePopupClient.h" +#include "PlatformLocale.h" #include "WebColorChooserClient.h" #include #include @@ -61,7 +61,7 @@ public: // PagePopupClient functions: virtual WebCore::IntSize contentSize() OVERRIDE; virtual void writeDocument(WebCore::DocumentWriter&) OVERRIDE; - virtual WebCore::Localizer& localizer() OVERRIDE; + virtual WebCore::Locale& locale() OVERRIDE; virtual void setValueAndClosePopup(int, const String&) OVERRIDE; virtual void didClosePopup() OVERRIDE; @@ -74,7 +74,7 @@ private: WebCore::ColorChooserClient* m_client; OwnPtr m_chooser; WebCore::PagePopup* m_popup; - OwnPtr m_localizer; + OwnPtr m_locale; }; } diff --git a/Source/WebKit/chromium/src/ContextFeaturesClientImpl.cpp b/Source/WebKit/chromium/src/ContextFeaturesClientImpl.cpp index e5795edc4..335d71d2b 100644 --- a/Source/WebKit/chromium/src/ContextFeaturesClientImpl.cpp +++ b/Source/WebKit/chromium/src/ContextFeaturesClientImpl.cpp @@ -140,12 +140,15 @@ bool ContextFeaturesClientImpl::askIfIsEnabled(Document* document, ContextFeatur return defaultValue; switch (type) { + case ContextFeatures::ShadowDOM: case ContextFeatures::StyleScoped: return m_client->allowWebComponents(WebDocument(document), defaultValue); case ContextFeatures::HTMLNotifications: return m_client->allowHTMLNotifications(WebDocument(document)); case ContextFeatures::MutationEvents: return m_client->allowMutationEvents(WebDocument(document), defaultValue); + case ContextFeatures::PushState: + return m_client->allowPushState(WebDocument(document)); default: return defaultValue; } diff --git a/Source/WebKit/chromium/src/DateTimeChooserImpl.cpp b/Source/WebKit/chromium/src/DateTimeChooserImpl.cpp index 20044add8..29d519966 100644 --- a/Source/WebKit/chromium/src/DateTimeChooserImpl.cpp +++ b/Source/WebKit/chromium/src/DateTimeChooserImpl.cpp @@ -29,10 +29,9 @@ */ #include "config.h" +#if ENABLE(INPUT_MULTIPLE_FIELDS_UI) #include "DateTimeChooserImpl.h" -#if ENABLE(CALENDAR_PICKER) - #include "CalendarPicker.h" #include "ChromeClientImpl.h" #include "DateComponents.h" @@ -40,14 +39,18 @@ #include "FrameView.h" #include "InputTypeNames.h" #include "Language.h" -#include "Localizer.h" #include "NotImplemented.h" #include "PickerCommon.h" +#include "PlatformLocale.h" #include "RenderTheme.h" #include "WebViewImpl.h" #include #include +#if !ENABLE(CALENDAR_PICKER) +#error "ENABLE_INPUT_MULTIPLE_FIELDS_UI requires ENABLE_CALENDAR_PICKER in Chromium." +#endif + using namespace WebCore; namespace WebKit { @@ -57,13 +60,18 @@ DateTimeChooserImpl::DateTimeChooserImpl(ChromeClientImpl* chromeClient, WebCore , m_client(client) , m_popup(0) , m_parameters(parameters) - , m_localizer(WebCore::Localizer::createDefault()) + , m_locale(WebCore::Locale::createDefault()) { ASSERT(m_chromeClient); ASSERT(m_client); m_popup = m_chromeClient->openPagePopup(this, m_parameters.anchorRectInRootView); } +PassRefPtr DateTimeChooserImpl::create(ChromeClientImpl* chromeClient, WebCore::DateTimeChooserClient* client, const WebCore::DateTimeChooserParameters& parameters) +{ + return adoptRef(new DateTimeChooserImpl(chromeClient, client, parameters)); +} + DateTimeChooserImpl::~DateTimeChooserImpl() { } @@ -93,6 +101,7 @@ void DateTimeChooserImpl::writeDocument(WebCore::DocumentWriter& writer) FrameView* view = static_cast(m_chromeClient->webView())->page()->mainFrame()->view(); IntRect rootViewVisibleContentRect = view->visibleContentRect(true /* include scrollbars */); IntRect rootViewRectInScreen = m_chromeClient->rootViewToScreen(rootViewVisibleContentRect); + rootViewRectInScreen.move(-view->scrollX(), -view->scrollY()); addString("