diff options
Diffstat (limited to 'Source/WebCore/page/Page.h')
| -rw-r--r-- | Source/WebCore/page/Page.h | 438 |
1 files changed, 156 insertions, 282 deletions
diff --git a/Source/WebCore/page/Page.h b/Source/WebCore/page/Page.h index 5ed172b51..f0b331737 100644 --- a/Source/WebCore/page/Page.h +++ b/Source/WebCore/page/Page.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006-2010, 2013, 2015 Apple Inc. All rights reserved. + * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2013 Apple Inc. All rights reserved. * Copyright (C) 2008 Torch Mobile Inc. All rights reserved. (http://www.torchmobile.com/) * * This library is free software; you can redistribute it and/or @@ -21,23 +21,17 @@ #ifndef Page_h #define Page_h +#include "FeatureObserver.h" #include "FindOptions.h" #include "FrameLoaderTypes.h" #include "LayoutMilestones.h" #include "LayoutRect.h" -#include "MediaProducer.h" -#include "PageThrottler.h" #include "PageVisibilityState.h" #include "Pagination.h" #include "PlatformScreen.h" #include "Region.h" -#include "ScrollTypes.h" -#include "SessionID.h" #include "Supplementable.h" -#include "ViewState.h" #include "ViewportArguments.h" -#include "WheelEventTestTrigger.h" -#include <memory> #include <wtf/Forward.h> #include <wtf/HashMap.h> #include <wtf/HashSet.h> @@ -50,16 +44,12 @@ #include <sys/time.h> // For time_t structure. #endif -#if PLATFORM(COCOA) +#if PLATFORM(MAC) #include <wtf/SchedulePair.h> #endif -#if ENABLE(MEDIA_SESSION) -#include "MediaSessionEvents.h" -#endif - -#if ENABLE(WIRELESS_PLAYBACK_TARGET) -#include "MediaPlaybackTargetContext.h" +#if PLATFORM(IOS) +#include "Settings.h" #endif namespace JSC { @@ -68,21 +58,15 @@ class Debugger; namespace WebCore { -namespace IDBClient { -class IDBConnectionToServer; -} - class AlternativeTextClient; -class ApplicationCacheStorage; class BackForwardController; class BackForwardClient; class Chrome; class ChromeClient; class ClientRectList; -class Color; class ContextMenuClient; class ContextMenuController; -class DatabaseProvider; +class Document; class DragCaretController; class DragClient; class DragController; @@ -90,16 +74,16 @@ class EditorClient; class FocusController; class Frame; class FrameLoaderClient; +class FrameSelection; +class HaltablePlugin; class HistoryItem; -class HTMLMediaElement; -class UserInputBridge; class InspectorClient; class InspectorController; class MainFrame; class MediaCanStartListener; -class MediaPlaybackTarget; -class PageConfiguration; -class PageConsoleClient; +class Node; +class PageActivityAssertionToken; +class PageConsole; class PageDebuggable; class PageGroup; class PageThrottler; @@ -112,81 +96,92 @@ class ProgressTrackerClient; class Range; class RenderObject; class RenderTheme; -class ReplayController; -class ResourceUsageOverlay; class VisibleSelection; class ScrollableArea; class ScrollingCoordinator; class Settings; class StorageNamespace; -class StorageNamespaceProvider; class UserContentController; class ValidationMessageClient; -class ViewStateChangeObserver; -class VisitedLinkStore; typedef uint64_t LinkHash; enum FindDirection { FindDirectionForward, FindDirectionBackward }; +float deviceScaleFactor(Frame*); + class Page : public Supplementable<Page> { WTF_MAKE_NONCOPYABLE(Page); - WTF_MAKE_FAST_ALLOCATED; friend class Settings; friend class PageThrottler; public: - WEBCORE_EXPORT static void updateStyleForAllPagesAfterGlobalChangeInEnvironment(); - WEBCORE_EXPORT static void clearPreviousItemFromAllPages(HistoryItem*); - WEBCORE_EXPORT static void setTabSuspensionEnabled(bool); + static void updateStyleForAllPagesAfterGlobalChangeInEnvironment(); + static void jettisonStyleResolversInAllDocuments(); + + // It is up to the platform to ensure that non-null clients are provided where required. + struct PageClients { + WTF_MAKE_NONCOPYABLE(PageClients); WTF_MAKE_FAST_ALLOCATED; + public: + PageClients(); + ~PageClients(); + + AlternativeTextClient* alternativeTextClient; + ChromeClient* chromeClient; +#if ENABLE(CONTEXT_MENUS) + ContextMenuClient* contextMenuClient; +#endif + EditorClient* editorClient; + DragClient* dragClient; + InspectorClient* inspectorClient; + PlugInClient* plugInClient; + ProgressTrackerClient* progressTrackerClient; + RefPtr<BackForwardClient> backForwardClient; + ValidationMessageClient* validationMessageClient; + FrameLoaderClient* loaderClientForMainFrame; + }; - WEBCORE_EXPORT explicit Page(PageConfiguration&); - WEBCORE_EXPORT ~Page(); + explicit Page(PageClients&); + ~Page(); - WEBCORE_EXPORT uint64_t renderTreeSize() const; + uint64_t renderTreeSize() const; void setNeedsRecalcStyleInAllFrames(); RenderTheme& theme() const { return *m_theme; } - WEBCORE_EXPORT ViewportArguments viewportArguments() const; + ViewportArguments viewportArguments() const; static void refreshPlugins(bool reload); - WEBCORE_EXPORT PluginData& pluginData() const; + PluginData& pluginData() const; - WEBCORE_EXPORT void setCanStartMedia(bool); + void setCanStartMedia(bool); bool canStartMedia() const { return m_canStartMedia; } - EditorClient& editorClient() { return m_editorClient; } + EditorClient* editorClient() const { return m_editorClient; } PlugInClient* plugInClient() const { return m_plugInClient; } MainFrame& mainFrame() { ASSERT(m_mainFrame); return *m_mainFrame; } const MainFrame& mainFrame() const { ASSERT(m_mainFrame); return *m_mainFrame; } - bool inPageCache() const; - bool openedByDOM() const; void setOpenedByDOM(); - WEBCORE_EXPORT void goToItem(HistoryItem&, FrameLoadType); + void goToItem(HistoryItem*, FrameLoadType); - WEBCORE_EXPORT void setGroupName(const String&); - WEBCORE_EXPORT const String& groupName() const; + void setGroupName(const String&); + const String& groupName() const; PageGroup& group(); PageGroup* groupPtr() { return m_group; } // can return 0 - static void forEachPage(std::function<void(Page&)>); - void incrementSubframeCount() { ++m_subframeCount; } void decrementSubframeCount() { ASSERT(m_subframeCount); --m_subframeCount; } int subframeCount() const { checkSubframeCountConsistency(); return m_subframeCount; } #if ENABLE(REMOTE_INSPECTOR) - WEBCORE_EXPORT bool remoteInspectionAllowed() const; - WEBCORE_EXPORT void setRemoteInspectionAllowed(bool); - WEBCORE_EXPORT String remoteInspectionNameOverride() const; - WEBCORE_EXPORT void setRemoteInspectionNameOverride(const String&); + bool remoteInspectionAllowed() const; + void setRemoteInspectionAllowed(bool); void remoteInspectorInformationDidChange() const; #endif @@ -199,27 +194,25 @@ public: #if ENABLE(CONTEXT_MENUS) ContextMenuController& contextMenuController() const { return *m_contextMenuController; } #endif - UserInputBridge& userInputBridge() const { return *m_userInputBridge; } -#if ENABLE(WEB_REPLAY) - ReplayController& replayController() const { return *m_replayController; } -#endif +#if ENABLE(INSPECTOR) InspectorController& inspectorController() const { return *m_inspectorController; } +#endif #if ENABLE(POINTER_LOCK) - PointerLockController& pointerLockController() const { return *m_pointerLockController; } + PointerLockController* pointerLockController() const { return m_pointerLockController.get(); } #endif ValidationMessageClient* validationMessageClient() const { return m_validationMessageClient; } - WEBCORE_EXPORT ScrollingCoordinator* scrollingCoordinator(); + ScrollingCoordinator* scrollingCoordinator(); - WEBCORE_EXPORT String scrollingStateTreeAsText(); - WEBCORE_EXPORT String synchronousScrollingReasonsAsText(); - WEBCORE_EXPORT Ref<ClientRectList> nonFastScrollableRects(); + String scrollingStateTreeAsText(); + String synchronousScrollingReasonsAsText(); + PassRefPtr<ClientRectList> nonFastScrollableRects(const Frame*); Settings& settings() const { return *m_settings; } ProgressTracker& progress() const { return *m_progress; } BackForwardController& backForward() const { return *m_backForwardController; } - double domTimerAlignmentInterval() const { return m_timerAlignmentInterval; } + FeatureObserver* featureObserver() { return &m_featureObserver; } #if ENABLE(VIEW_MODE_CSS_MEDIA) enum ViewMode { @@ -233,20 +226,20 @@ public: static ViewMode stringToViewMode(const String&); ViewMode viewMode() const { return m_viewMode; } - WEBCORE_EXPORT void setViewMode(ViewMode); + void setViewMode(ViewMode); #endif // ENABLE(VIEW_MODE_CSS_MEDIA) void setTabKeyCyclesThroughElements(bool b) { m_tabKeyCyclesThroughElements = b; } bool tabKeyCyclesThroughElements() const { return m_tabKeyCyclesThroughElements; } - WEBCORE_EXPORT bool findString(const String&, FindOptions); + bool findString(const String&, FindOptions); - WEBCORE_EXPORT RefPtr<Range> rangeOfString(const String&, Range*, FindOptions); + PassRefPtr<Range> rangeOfString(const String&, Range*, FindOptions); - WEBCORE_EXPORT unsigned countFindMatches(const String&, FindOptions, unsigned maxMatchCount); - WEBCORE_EXPORT unsigned markAllMatchesForText(const String&, FindOptions, bool shouldHighlight, unsigned maxMatchCount); + unsigned countFindMatches(const String&, FindOptions, unsigned maxMatchCount); + unsigned markAllMatchesForText(const String&, FindOptions, bool shouldHighlight, unsigned maxMatchCount); - WEBCORE_EXPORT void unmarkAllTextMatches(); + void unmarkAllTextMatches(); // find all the Ranges for the matching text. // Upon return, indexForSelection will be one of the following: @@ -254,116 +247,95 @@ public: // the index of the first range after the user selection // NoMatchAfterUserSelection if there is no matching text after the user selection. enum { NoMatchAfterUserSelection = -1 }; - WEBCORE_EXPORT void findStringMatchingRanges(const String&, FindOptions, int maxCount, Vector<RefPtr<Range>>&, int& indexForSelection); -#if PLATFORM(COCOA) - void platformInitialize(); - WEBCORE_EXPORT void addSchedulePair(Ref<SchedulePair>&&); - WEBCORE_EXPORT void removeSchedulePair(Ref<SchedulePair>&&); + void findStringMatchingRanges(const String&, FindOptions, int maxCount, Vector<RefPtr<Range>>*, int& indexForSelection); +#if PLATFORM(MAC) + void addSchedulePair(PassRefPtr<SchedulePair>); + void removeSchedulePair(PassRefPtr<SchedulePair>); SchedulePairHashSet* scheduledRunLoopPairs() { return m_scheduledRunLoopPairs.get(); } - std::unique_ptr<SchedulePairHashSet> m_scheduledRunLoopPairs; + OwnPtr<SchedulePairHashSet> m_scheduledRunLoopPairs; #endif - WEBCORE_EXPORT const VisibleSelection& selection() const; + const VisibleSelection& selection() const; - WEBCORE_EXPORT void setDefersLoading(bool); + void setDefersLoading(bool); bool defersLoading() const { return m_defersLoading; } - WEBCORE_EXPORT void clearUndoRedoOperations(); + void clearUndoRedoOperations(); - WEBCORE_EXPORT bool inLowQualityImageInterpolationMode() const; - WEBCORE_EXPORT void setInLowQualityImageInterpolationMode(bool = true); + bool inLowQualityImageInterpolationMode() const; + void setInLowQualityImageInterpolationMode(bool = true); float mediaVolume() const { return m_mediaVolume; } - WEBCORE_EXPORT void setMediaVolume(float); + void setMediaVolume(float); - WEBCORE_EXPORT void setPageScaleFactor(float scale, const IntPoint& origin, bool inStableState = true); + void setPageScaleFactor(float scale, const IntPoint& origin); float pageScaleFactor() const { return m_pageScaleFactor; } - // The view scale factor is multiplied into the page scale factor by all - // callers of setPageScaleFactor. - WEBCORE_EXPORT void setViewScaleFactor(float); - float viewScaleFactor() const { return m_viewScaleFactor; } - - WEBCORE_EXPORT void setZoomedOutPageScaleFactor(float); - float zoomedOutPageScaleFactor() const { return m_zoomedOutPageScaleFactor; } - float deviceScaleFactor() const { return m_deviceScaleFactor; } - WEBCORE_EXPORT void setDeviceScaleFactor(float); + void setDeviceScaleFactor(float); - float topContentInset() const { return m_topContentInset; } - WEBCORE_EXPORT void setTopContentInset(float); - -#if ENABLE(IOS_TEXT_AUTOSIZING) - float textAutosizingWidth() const { return m_textAutosizingWidth; } - void setTextAutosizingWidth(float textAutosizingWidth) { m_textAutosizingWidth = textAutosizingWidth; } -#endif - bool shouldSuppressScrollbarAnimations() const { return m_suppressScrollbarAnimations; } - WEBCORE_EXPORT void setShouldSuppressScrollbarAnimations(bool suppressAnimations); + void setShouldSuppressScrollbarAnimations(bool suppressAnimations); void lockAllOverlayScrollbarsToHidden(bool lockOverlayScrollbars); - - WEBCORE_EXPORT void setVerticalScrollElasticity(ScrollElasticity); - ScrollElasticity verticalScrollElasticity() const { return static_cast<ScrollElasticity>(m_verticalScrollElasticity); } - WEBCORE_EXPORT void setHorizontalScrollElasticity(ScrollElasticity); - ScrollElasticity horizontalScrollElasticity() const { return static_cast<ScrollElasticity>(m_horizontalScrollElasticity); } - // Page and FrameView both store a Pagination value. Page::pagination() is set only by API, // and FrameView::pagination() is set only by CSS. Page::pagination() will affect all // FrameViews in the page cache, but FrameView::pagination() only affects the current // FrameView. const Pagination& pagination() const { return m_pagination; } - WEBCORE_EXPORT void setPagination(const Pagination&); - bool paginationLineGridEnabled() const { return m_paginationLineGridEnabled; } - WEBCORE_EXPORT void setPaginationLineGridEnabled(bool flag); + void setPagination(const Pagination&); - WEBCORE_EXPORT unsigned pageCount() const; + unsigned pageCount() const; // Notifications when the Page starts and stops being presented via a native window. - WEBCORE_EXPORT void setViewState(ViewState::Flags); - void setPageActivityState(PageActivityState::Flags); - WEBCORE_EXPORT void setIsVisible(bool); - WEBCORE_EXPORT void setIsPrerender(); - bool isVisible() const { return m_viewState & ViewState::IsVisible; } + void setIsVisible(bool isVisible, bool isInitial); + void setIsPrerender(); + bool isVisible() const { return m_isVisible; } // Notification that this Page was moved into or out of a native window. - WEBCORE_EXPORT void setIsInWindow(bool); - bool isInWindow() const { return m_viewState & ViewState::IsInWindow; } - - void setIsClosing() { m_isClosing = true; } - bool isClosing() const { return m_isClosing; } - - void addViewStateChangeObserver(ViewStateChangeObserver&); - void removeViewStateChangeObserver(ViewStateChangeObserver&); + void setIsInWindow(bool); + bool isInWindow() const { return m_isInWindow; } - WEBCORE_EXPORT void suspendScriptedAnimations(); - WEBCORE_EXPORT void resumeScriptedAnimations(); + void suspendScriptedAnimations(); + void resumeScriptedAnimations(); bool scriptedAnimationsSuspended() const { return m_scriptedAnimationsSuspended; } + void setIsVisuallyIdle(bool); void userStyleSheetLocationChanged(); const String& userStyleSheet() const; void dnsPrefetchingStateChanged(); void storageBlockingStateChanged(); - -#if ENABLE(RESOURCE_USAGE) - void setResourceUsageOverlayVisible(bool); -#endif + void privateBrowsingStateChanged(); void setDebugger(JSC::Debugger*); JSC::Debugger* debugger() const { return m_debugger; } - WEBCORE_EXPORT void invalidateStylesForAllLinks(); - WEBCORE_EXPORT void invalidateStylesForLink(LinkHash); + static void removeAllVisitedLinks(); + + static void allVisitedStateChanged(PageGroup*); + static void visitedStateChanged(PageGroup*, LinkHash visitedHash); StorageNamespace* sessionStorage(bool optionalCreate = true); - void setSessionStorage(RefPtr<StorageNamespace>&&); + void setSessionStorage(PassRefPtr<StorageNamespace>); + + // FIXME: We should make Settings::maxParseDuration() platform-independent, remove {has, set}CustomHTMLTokenizerTimeDelay() + // and customHTMLTokenizerTimeDelay() and modify theirs callers to update or query Settings::maxParseDuration(). + void setCustomHTMLTokenizerTimeDelay(double); +#if PLATFORM(IOS) + bool hasCustomHTMLTokenizerTimeDelay() const { return m_settings->maxParseDuration() != -1; } + double customHTMLTokenizerTimeDelay() const { ASSERT(m_settings->maxParseDuration() != -1); return m_settings->maxParseDuration(); } +#else + bool hasCustomHTMLTokenizerTimeDelay() const { return m_customHTMLTokenizerTimeDelay != -1; } + double customHTMLTokenizerTimeDelay() const { ASSERT(m_customHTMLTokenizerTimeDelay != -1); return m_customHTMLTokenizerTimeDelay; } +#endif - bool hasCustomHTMLTokenizerTimeDelay() const; - double customHTMLTokenizerTimeDelay() const; + void setCustomHTMLTokenizerChunkSize(int); + bool hasCustomHTMLTokenizerChunkSize() const { return m_customHTMLTokenizerChunkSize != -1; } + int customHTMLTokenizerChunkSize() const { ASSERT(m_customHTMLTokenizerChunkSize != -1); return m_customHTMLTokenizerChunkSize; } - WEBCORE_EXPORT void setMemoryCacheClientCallsEnabled(bool); + void setMemoryCacheClientCallsEnabled(bool); bool areMemoryCacheClientCallsEnabled() const { return m_areMemoryCacheClientCallsEnabled; } // Don't allow more than a certain number of frames in a page. @@ -372,40 +344,34 @@ public: // with exponential growth in the number of frames. static const int maxNumberOfFrames = 1000; - static bool s_tabSuspensionIsEnabled; - void setEditable(bool isEditable) { m_isEditable = isEditable; } bool isEditable() { return m_isEditable; } - WEBCORE_EXPORT PageVisibilityState visibilityState() const; - WEBCORE_EXPORT void resumeAnimatingImages(); +#if ENABLE(PAGE_VISIBILITY_API) + PageVisibilityState visibilityState() const; +#endif + void resumeAnimatingImages(); - WEBCORE_EXPORT void addLayoutMilestones(LayoutMilestones); - WEBCORE_EXPORT void removeLayoutMilestones(LayoutMilestones); + void addLayoutMilestones(LayoutMilestones); + void removeLayoutMilestones(LayoutMilestones); LayoutMilestones requestedLayoutMilestones() const { return m_requestedLayoutMilestones; } #if ENABLE(RUBBER_BANDING) - WEBCORE_EXPORT void addHeaderWithHeight(int); - WEBCORE_EXPORT void addFooterWithHeight(int); + void addHeaderWithHeight(int); + void addFooterWithHeight(int); #endif int headerHeight() const { return m_headerHeight; } int footerHeight() const { return m_footerHeight; } - WEBCORE_EXPORT Color pageExtendedBackgroundColor() const; - bool isCountingRelevantRepaintedObjects() const; - void setIsCountingRelevantRepaintedObjects(bool isCounting) { m_isCountingRelevantRepaintedObjects = isCounting; } void startCountingRelevantRepaintedObjects(); void resetRelevantPaintedObjectCounter(); void addRelevantRepaintedObject(RenderObject*, const LayoutRect& objectPaintRect); void addRelevantUnpaintedObject(RenderObject*, const LayoutRect& objectPaintRect); - WEBCORE_EXPORT void suspendActiveDOMObjectsAndAnimations(); - WEBCORE_EXPORT void resumeActiveDOMObjectsAndAnimations(); - void suspendDeviceMotionAndOrientationUpdates(); - void resumeDeviceMotionAndOrientationUpdates(); - + void suspendActiveDOMObjectsAndAnimations(); + void resumeActiveDOMObjectsAndAnimations(); #ifndef NDEBUG void setIsPainting(bool painting) { m_isPainting = painting; } bool isPainting() const { return m_isPainting; } @@ -414,7 +380,7 @@ public: AlternativeTextClient* alternativeTextClient() const { return m_alternativeTextClient; } bool hasSeenPlugin(const String& serviceType) const; - WEBCORE_EXPORT bool hasSeenAnyPlugin() const; + bool hasSeenAnyPlugin() const; void sawPlugin(const String& serviceType); void resetSeenPlugins(); @@ -423,91 +389,33 @@ public: void sawMediaEngine(const String& engineName); void resetSeenMediaEngines(); - PageThrottler& pageThrottler() { return m_pageThrottler; } + PageThrottler& pageThrottler() { return *m_pageThrottler; } + std::unique_ptr<PageActivityAssertionToken> createActivityToken(); - PageConsoleClient& console() { return *m_consoleClient; } + PageConsole& console() { return *m_console; } -#if ENABLE(REMOTE_INSPECTOR) - PageDebuggable& inspectorDebuggable() const { return *m_inspectorDebuggable.get(); } +#if ENABLE(HIDDEN_PAGE_DOM_TIMER_THROTTLING) + void hiddenPageDOMTimerThrottlingStateChanged(); #endif - +#if ENABLE(PAGE_VISIBILITY_API) void hiddenPageCSSAnimationSuspensionStateChanged(); +#endif #if ENABLE(VIDEO_TRACK) void captionPreferencesChanged(); #endif - void forbidPrompts(); - void allowPrompts(); - bool arePromptsAllowed(); - + void incrementFrameHandlingBeforeUnloadEventCount(); + void decrementFrameHandlingBeforeUnloadEventCount(); + bool isAnyFrameHandlingBeforeUnloadEvent(); void setLastSpatialNavigationCandidateCount(unsigned count) { m_lastSpatialNavigationCandidatesCount = count; } unsigned lastSpatialNavigationCandidateCount() const { return m_lastSpatialNavigationCandidatesCount; } - ApplicationCacheStorage& applicationCacheStorage() { return m_applicationCacheStorage; } - DatabaseProvider& databaseProvider() { return m_databaseProvider; } - - StorageNamespaceProvider& storageNamespaceProvider() { return m_storageNamespaceProvider.get(); } - void setStorageNamespaceProvider(Ref<StorageNamespaceProvider>&&); - + void setUserContentController(UserContentController*); UserContentController* userContentController() { return m_userContentController.get(); } - WEBCORE_EXPORT void setUserContentController(UserContentController*); - - VisitedLinkStore& visitedLinkStore(); - WEBCORE_EXPORT void setVisitedLinkStore(Ref<VisitedLinkStore>&&); - - WEBCORE_EXPORT SessionID sessionID() const; - WEBCORE_EXPORT void setSessionID(SessionID); - WEBCORE_EXPORT void enableLegacyPrivateBrowsing(bool privateBrowsingEnabled); - bool usesEphemeralSession() const { return m_sessionID.isEphemeral(); } - - MediaProducer::MediaStateFlags mediaState() const { return m_mediaState; } - void updateIsPlayingMedia(uint64_t); - bool isMuted() const { return m_muted; } - WEBCORE_EXPORT void setMuted(bool); - -#if ENABLE(MEDIA_SESSION) - WEBCORE_EXPORT void handleMediaEvent(MediaEventType); - WEBCORE_EXPORT void setVolumeOfMediaElement(double, uint64_t); -#endif - -#if ENABLE(WIRELESS_PLAYBACK_TARGET) - void addPlaybackTargetPickerClient(uint64_t); - void removePlaybackTargetPickerClient(uint64_t); - void showPlaybackTargetPicker(uint64_t, const IntPoint&, bool); - void playbackTargetPickerClientStateDidChange(uint64_t, MediaProducer::MediaStateFlags); - WEBCORE_EXPORT void setMockMediaPlaybackTargetPickerEnabled(bool); - WEBCORE_EXPORT void setMockMediaPlaybackTargetPickerState(const String&, MediaPlaybackTargetContext::State); - - WEBCORE_EXPORT void setPlaybackTarget(uint64_t, Ref<MediaPlaybackTarget>&&); - WEBCORE_EXPORT void playbackTargetAvailabilityDidChange(uint64_t, bool); - WEBCORE_EXPORT void setShouldPlayToPlaybackTarget(uint64_t, bool); -#endif - - RefPtr<WheelEventTestTrigger> testTrigger() const { return m_testTrigger; } - WEBCORE_EXPORT WheelEventTestTrigger& ensureTestTrigger(); - void clearTrigger() { m_testTrigger = nullptr; } - bool expectsWheelEventTriggers() const { return !!m_testTrigger; } - -#if ENABLE(VIDEO) - bool allowsMediaDocumentInlinePlayback() const { return m_allowsMediaDocumentInlinePlayback; } - WEBCORE_EXPORT void setAllowsMediaDocumentInlinePlayback(bool); -#endif - -#if ENABLE(INDEXED_DATABASE) - IDBClient::IDBConnectionToServer& idbConnection(); -#endif - - void setShowAllPlugins(bool showAll) { m_showAllPlugins = showAll; } - bool showAllPlugins() const; - void setIsTabSuspended(bool); private: - WEBCORE_EXPORT void initGroup(); - - void setIsInWindowInternal(bool); - void setIsVisibleInternal(bool); - void setIsVisuallyIdleInternal(bool); + void initGroup(); #if ASSERT_DISABLED void checkSubframeCountConsistency() const { } @@ -522,15 +430,16 @@ private: MediaCanStartListener* takeAnyMediaCanStartListener(); + void setMinimumTimerInterval(double); + double minimumTimerInterval() const; + + void setTimerAlignmentInterval(double); + double timerAlignmentInterval() const; + Vector<Ref<PluginViewBase>> pluginViews(); - void hiddenPageDOMTimerThrottlingStateChanged(); - void setTimerThrottlingEnabled(bool); - void setDOMTimerAlignmentInterval(double); - void timerAlignmentIntervalTimerFired(); - bool canTabSuspend(); - void updateTabSuspensionState(); - void tabSuspensionTimerFired(); + void throttleTimers(); + void unthrottleTimers(); const std::unique_ptr<Chrome> m_chrome; const std::unique_ptr<DragCaretController> m_dragCaretController; @@ -542,13 +451,11 @@ private: #if ENABLE(CONTEXT_MENUS) const std::unique_ptr<ContextMenuController> m_contextMenuController; #endif - const std::unique_ptr<UserInputBridge> m_userInputBridge; -#if ENABLE(WEB_REPLAY) - const std::unique_ptr<ReplayController> m_replayController; -#endif +#if ENABLE(INSPECTOR) const std::unique_ptr<InspectorController> m_inspectorController; +#endif #if ENABLE(POINTER_LOCK) - const std::unique_ptr<PointerLockController> m_pointerLockController; + OwnPtr<PointerLockController> m_pointerLockController; #endif RefPtr<ScrollingCoordinator> m_scrollingCoordinator; @@ -562,10 +469,12 @@ private: RefPtr<RenderTheme> m_theme; - EditorClient& m_editorClient; + EditorClient* m_editorClient; PlugInClient* m_plugInClient; ValidationMessageClient* m_validationMessageClient; + FeatureObserver m_featureObserver; + int m_subframeCount; String m_groupName; bool m_openedByDOM; @@ -577,26 +486,13 @@ private: bool m_inLowQualityInterpolationMode; bool m_areMemoryCacheClientCallsEnabled; float m_mediaVolume; - bool m_muted; float m_pageScaleFactor; - float m_zoomedOutPageScaleFactor; - float m_deviceScaleFactor { 1 }; - float m_viewScaleFactor { 1 }; + float m_deviceScaleFactor; - float m_topContentInset; - -#if ENABLE(IOS_TEXT_AUTOSIZING) - float m_textAutosizingWidth; -#endif - bool m_suppressScrollbarAnimations; - - unsigned m_verticalScrollElasticity : 2; // ScrollElasticity - unsigned m_horizontalScrollElasticity : 2; // ScrollElasticity Pagination m_pagination; - bool m_paginationLineGridEnabled { false }; String m_userStyleSheetPath; mutable String m_userStyleSheet; @@ -608,6 +504,9 @@ private: JSC::Debugger* m_debugger; + double m_customHTMLTokenizerTimeDelay; + int m_customHTMLTokenizerChunkSize; + bool m_canStartMedia; RefPtr<StorageNamespace> m_sessionStorage; @@ -616,13 +515,14 @@ private: ViewMode m_viewMode; #endif // ENABLE(VIEW_MODE_CSS_MEDIA) - bool m_timerThrottlingEnabled; + double m_minimumTimerInterval; + double m_timerAlignmentInterval; bool m_isEditable; + bool m_isInWindow; + bool m_isVisible; bool m_isPrerender; - ViewState::Flags m_viewState; - PageActivityState::Flags m_pageActivityState; LayoutMilestones m_requestedLayoutMilestones; @@ -640,46 +540,20 @@ private: AlternativeTextClient* m_alternativeTextClient; bool m_scriptedAnimationsSuspended; - PageThrottler m_pageThrottler; - const std::unique_ptr<PageConsoleClient> m_consoleClient; + const std::unique_ptr<PageThrottler> m_pageThrottler; + const std::unique_ptr<PageConsole> m_console; #if ENABLE(REMOTE_INSPECTOR) const std::unique_ptr<PageDebuggable> m_inspectorDebuggable; #endif -#if ENABLE(INDEXED_DATABASE) - RefPtr<IDBClient::IDBConnectionToServer> m_idbIDBConnectionToServer; -#endif - HashSet<String> m_seenPlugins; HashSet<String> m_seenMediaEngines; unsigned m_lastSpatialNavigationCandidatesCount; - unsigned m_forbidPromptsDepth; + unsigned m_framesHandlingBeforeUnloadEvent; - Ref<ApplicationCacheStorage> m_applicationCacheStorage; - Ref<DatabaseProvider> m_databaseProvider; - Ref<StorageNamespaceProvider> m_storageNamespaceProvider; RefPtr<UserContentController> m_userContentController; - Ref<VisitedLinkStore> m_visitedLinkStore; - RefPtr<WheelEventTestTrigger> m_testTrigger; - - HashSet<ViewStateChangeObserver*> m_viewStateChangeObservers; - -#if ENABLE(RESOURCE_USAGE) - std::unique_ptr<ResourceUsageOverlay> m_resourceUsageOverlay; -#endif - - SessionID m_sessionID; - - bool m_isClosing; - bool m_isTabSuspended { false }; - Timer m_tabSuspensionTimer; - - MediaProducer::MediaStateFlags m_mediaState { MediaProducer::IsNotPlaying }; - - bool m_allowsMediaDocumentInlinePlayback { false }; - bool m_showAllPlugins { false }; }; inline PageGroup& Page::group() |
