Changeset 175494 in webkit


Ignore:
Timestamp:
Nov 3, 2014, 4:12:48 PM (10 years ago)
Author:
Simon Fraser
Message:

Add page overlays that show regions with mouseWheel event handlers, and the non-fast-scrollable region, and code to toggle them in MiniBrowser WK2
https://bugs.webkit.org/show_bug.cgi?id=138257

Reviewed by Tim Horton.
Source/WebCore:

Add code for debugging page overlays that show the non-fast scrollable region,
and the region with wheel event handlers. The list of region types is intended
to be easily extensible.

A singleton DebugPageOverlays maintains a map of Frame -> vector of overlays.
A purely inline code path is provided so that DebugPageOverlays::didLayout() is
fast.

For each region type, a PageOverlay::Client subclass knows how to generate
the region, which is painted into a document-level page overlay.

Add a set of bitflags to Settings to control region visibility.

  • WebCore.exp.in:
  • WebCore.xcodeproj/project.pbxproj:
  • page/DebugPageOverlays.cpp: Added.

(WebCore::RegionOverlay::overlay):
(WebCore::MouseWheelRegionOverlay::updateRegion):
(WebCore::NonFastScrollableRegionOverlay::updateRegion):
(WebCore::RegionOverlay::create):
(WebCore::RegionOverlay::RegionOverlay):
(WebCore::RegionOverlay::~RegionOverlay):
(WebCore::RegionOverlay::pageOverlayDestroyed):
(WebCore::RegionOverlay::willMoveToPage):
(WebCore::RegionOverlay::didMoveToPage):
(WebCore::RegionOverlay::drawRect):
(WebCore::RegionOverlay::mouseEvent):
(WebCore::RegionOverlay::didScrollFrame):
(WebCore::RegionOverlay::recomputeRegion):
(WebCore::DebugPageOverlays::shared):
(WebCore::indexOf):
(WebCore::DebugPageOverlays::ensureRegionOverlayForFrame):
(WebCore::DebugPageOverlays::showRegionOverlay):
(WebCore::DebugPageOverlays::hideRegionOverlay):
(WebCore::DebugPageOverlays::regionChanged):
(WebCore::DebugPageOverlays::regionOverlayForFrame):
(WebCore::DebugPageOverlays::updateOverlayRegionVisibility):
(WebCore::DebugPageOverlays::settingsChanged):

  • page/DebugPageOverlays.h: Added.

(WebCore::DebugPageOverlays::hasOverlaysForFrame):
(WebCore::DebugPageOverlays::hasOverlays):
(WebCore::DebugPageOverlays::didLayout):

  • page/FrameView.cpp:

(WebCore::FrameView::layout):

  • page/Settings.h:
  • page/Settings.in:

Source/WebKit2:

Add private prefs to control visibility of debug-related page region overlays.

  • Shared/WebPreferencesDefinitions.h:
  • UIProcess/API/Cocoa/WKPreferences.mm:

(-[WKPreferences _visibleDebugOverlayRegions]):
(-[WKPreferences _setVisibleDebugOverlayRegions:]):

  • UIProcess/API/Cocoa/WKPreferencesPrivate.h:
  • UIProcess/mac/WebPreferencesMac.mm:

(WebKit::setDebugUInt32ValueIfInUserDefaults):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences):

  • WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm:

(WebKit::RemoteLayerTreeDrawingArea::updatePreferences): Update the overlays.

  • WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:

(WebKit::TiledCoreAnimationDrawingArea::updatePreferences): Update the overlays.

Tools:

Add a "Debug Overlays" submenu item under "WebKit2-only Settings" which allows
the user to toggle region page overlays on and off. Two overlays are available,
for the non-fast scrollable region, and the region of element with wheel
event handlers.

  • MiniBrowser/mac/SettingsController.h:
  • MiniBrowser/mac/SettingsController.m:

(-[SettingsController _populateMenu]):
(-[SettingsController validateMenuItem:]):
(-[SettingsController nonFastScrollableRegionOverlayVisible]):
(-[SettingsController wheelEventHandlerRegionOverlayVisible]):
(-[SettingsController preferenceKeyForRegionOverlayTag:]):
(-[SettingsController toggleDebugOverlay:]):
(-[SettingsController debugOverlayVisible:]):

  • MiniBrowser/mac/WK2BrowserWindowController.m:

(-[WK2BrowserWindowController didChangeSettings]):

Location:
trunk
Files:
2 added
21 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/CMakeLists.txt

    r175491 r175494  
    18891889    page/DOMWindowExtension.cpp
    18901890    page/DOMWindowProperty.cpp
     1891    page/DebugPageOverlays.cpp
    18911892    page/DefaultVisitedLinkStore.cpp
    18921893    page/DeviceController.cpp
  • trunk/Source/WebCore/ChangeLog

    r175492 r175494  
     12014-11-03  Simon Fraser  <simon.fraser@apple.com>
     2
     3        Add page overlays that show regions with mouseWheel event handlers, and the non-fast-scrollable region, and code to toggle them in MiniBrowser WK2
     4        https://bugs.webkit.org/show_bug.cgi?id=138257
     5
     6        Reviewed by Tim Horton.
     7
     8        Add code for debugging page overlays that show the non-fast scrollable region,
     9        and the region with wheel event handlers. The list of region types is intended
     10        to be easily extensible.
     11       
     12        A singleton DebugPageOverlays maintains a map of Frame -> vector of overlays.
     13        A purely inline code path is provided so that DebugPageOverlays::didLayout() is
     14        fast.
     15       
     16        For each region type, a PageOverlay::Client subclass knows how to generate
     17        the region, which is painted into a document-level page overlay.
     18       
     19        Add a set of bitflags to Settings to control region visibility.
     20
     21        * WebCore.exp.in:
     22        * WebCore.xcodeproj/project.pbxproj:
     23        * page/DebugPageOverlays.cpp: Added.
     24        (WebCore::RegionOverlay::overlay):
     25        (WebCore::MouseWheelRegionOverlay::updateRegion):
     26        (WebCore::NonFastScrollableRegionOverlay::updateRegion):
     27        (WebCore::RegionOverlay::create):
     28        (WebCore::RegionOverlay::RegionOverlay):
     29        (WebCore::RegionOverlay::~RegionOverlay):
     30        (WebCore::RegionOverlay::pageOverlayDestroyed):
     31        (WebCore::RegionOverlay::willMoveToPage):
     32        (WebCore::RegionOverlay::didMoveToPage):
     33        (WebCore::RegionOverlay::drawRect):
     34        (WebCore::RegionOverlay::mouseEvent):
     35        (WebCore::RegionOverlay::didScrollFrame):
     36        (WebCore::RegionOverlay::recomputeRegion):
     37        (WebCore::DebugPageOverlays::shared):
     38        (WebCore::indexOf):
     39        (WebCore::DebugPageOverlays::ensureRegionOverlayForFrame):
     40        (WebCore::DebugPageOverlays::showRegionOverlay):
     41        (WebCore::DebugPageOverlays::hideRegionOverlay):
     42        (WebCore::DebugPageOverlays::regionChanged):
     43        (WebCore::DebugPageOverlays::regionOverlayForFrame):
     44        (WebCore::DebugPageOverlays::updateOverlayRegionVisibility):
     45        (WebCore::DebugPageOverlays::settingsChanged):
     46        * page/DebugPageOverlays.h: Added.
     47        (WebCore::DebugPageOverlays::hasOverlaysForFrame):
     48        (WebCore::DebugPageOverlays::hasOverlays):
     49        (WebCore::DebugPageOverlays::didLayout):
     50        * page/FrameView.cpp:
     51        (WebCore::FrameView::layout):
     52        * page/Settings.h:
     53        * page/Settings.in:
     54
    1552014-11-03  Simon Fraser  <simon.fraser@apple.com>
    256
  • trunk/Source/WebCore/WebCore.exp.in

    r175491 r175494  
    761761__ZN7WebCore17DOMImplementation13isXMLMIMETypeERKN3WTF6StringE
    762762__ZN7WebCore17DOMImplementation14isTextMIMETypeERKN3WTF6StringE
     763__ZN7WebCore17DebugPageOverlays15settingsChangedERNS_9MainFrameE
    763764__ZN7WebCore17GlyphPageTreeNode18treeGlyphPageCountEv
    764765__ZN7WebCore17HTMLOptionElement8selectedEv
  • trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj

    r175491 r175494  
    71417141    <ClCompile Include="..\page\DOMWindowProperty.cpp" />
    71427142    <ClCompile Include="..\page\DefaultVisitedLinkStore.cpp" />
     7143    <ClCompile Include="..\page\DebugPageOverlays.cpp" />
    71437144    <ClCompile Include="..\page\DragController.cpp" />
    71447145    <ClCompile Include="..\page\scrolling\coordinatedgraphics\ScrollingCoordinatorCoordinatedGraphics.cpp" />
     
    1915019151    <ClInclude Include="..\page\DOMWindowExtension.h" />
    1915119152    <ClInclude Include="..\page\DOMWindowProperty.h" />
     19153    <ClInclude Include="..\page\DebugPageOverlays.h" />
    1915219154    <ClInclude Include="..\page\DefaultVisitedLinkStore.h" />
    1915319155    <ClInclude Include="..\page\DragActions.h" />
  • trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters

    r175491 r175494  
    730730      <Filter>page</Filter>
    731731    </ClCompile>
     732    <ClCompile Include="..\page\DebugPageOverlays.cpp">
     733      <Filter>page</Filter>
     734    </ClCompile>
    732735    <ClCompile Include="..\page\DefaultVisitedLinkStore.cpp">
    733736      <Filter>page</Filter>
     
    1512215125    <ClInclude Include="..\html\URLUtils.h">
    1512315126      <Filter>html</Filter>
     15127    </ClInclude>
     15128    <ClInclude Include="..\page\DebugPageOverlays.h">
     15129      <Filter>page</Filter>
    1512415130    </ClInclude>
    1512515131    <ClInclude Include="..\page\DefaultVisitedLinkStore.h">
  • trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj

    r175491 r175494  
    534534                0F6383DD18615B29003E5DB5 /* ThreadedScrollingTree.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F6383DB18615B29003E5DB5 /* ThreadedScrollingTree.cpp */; };
    535535                0F6383DE18615B29003E5DB5 /* ThreadedScrollingTree.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F6383DC18615B29003E5DB5 /* ThreadedScrollingTree.h */; settings = {ATTRIBUTES = (Private, ); }; };
     536                0F6A12BD1A00923700C6DE72 /* DebugPageOverlays.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F6A12BB1A00923700C6DE72 /* DebugPageOverlays.cpp */; };
     537                0F6A12BE1A00923700C6DE72 /* DebugPageOverlays.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F6A12BC1A00923700C6DE72 /* DebugPageOverlays.h */; settings = {ATTRIBUTES = (Private, ); }; };
    536538                0F7D07321884C45C00B4AF86 /* PlatformTextTrackMenu.h in Headers */ = {isa = PBXBuildFile; fileRef = 072847E316EBC5B00043CFA4 /* PlatformTextTrackMenu.h */; settings = {ATTRIBUTES = (Private, ); }; };
    537539                0F7D07331884C56C00B4AF86 /* PlatformTextTrack.h in Headers */ = {isa = PBXBuildFile; fileRef = 072847E216EBC5B00043CFA4 /* PlatformTextTrack.h */; settings = {ATTRIBUTES = (Private, ); }; };
     
    74997501                0F6383DB18615B29003E5DB5 /* ThreadedScrollingTree.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ThreadedScrollingTree.cpp; sourceTree = "<group>"; };
    75007502                0F6383DC18615B29003E5DB5 /* ThreadedScrollingTree.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ThreadedScrollingTree.h; sourceTree = "<group>"; };
     7503                0F6A12BB1A00923700C6DE72 /* DebugPageOverlays.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DebugPageOverlays.cpp; sourceTree = "<group>"; };
     7504                0F6A12BC1A00923700C6DE72 /* DebugPageOverlays.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DebugPageOverlays.h; sourceTree = "<group>"; };
    75017505                0F97A657155DA81E00FADD4C /* DisplayRefreshMonitorIOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DisplayRefreshMonitorIOS.mm; sourceTree = "<group>"; };
    75027506                0FA24D77162DF91900A3F4C0 /* GraphicsLayerUpdater.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GraphicsLayerUpdater.cpp; sourceTree = "<group>"; };
     
    1661016614                                975CA288130365F800E99AD9 /* Crypto.h */,
    1661116615                                975CA289130365F800E99AD9 /* Crypto.idl */,
     16616                                0F6A12BB1A00923700C6DE72 /* DebugPageOverlays.cpp */,
     16617                                0F6A12BC1A00923700C6DE72 /* DebugPageOverlays.h */,
    1661216618                                1AF4CEE718BC350100BC2D34 /* DefaultVisitedLinkStore.cpp */,
    1661316619                                1AF4CEE818BC350100BC2D34 /* DefaultVisitedLinkStore.h */,
     
    2612626132                                B23540F30D00782E002382FA /* StringTruncator.h in Headers */,
    2612726133                                9B6C41531344949000085B62 /* StringWithDirection.h in Headers */,
     26134                                0F6A12BE1A00923700C6DE72 /* DebugPageOverlays.h in Headers */,
    2612826135                                849F77760EFEC6200090849D /* StrokeStyleApplier.h in Headers */,
    2612926136                                BC5EB6A30E81DC4F00B25965 /* StyleBackgroundData.h in Headers */,
     
    2749127498                                97BC6A271505F081001B74AC /* DatabaseContext.cpp in Sources */,
    2749227499                                FE456F181677D74E005EDDF9 /* DatabaseManager.cpp in Sources */,
     27500                                0F6A12BD1A00923700C6DE72 /* DebugPageOverlays.cpp in Sources */,
    2749327501                                FEB26D28167A8F2A00FDD26B /* DatabaseServer.cpp in Sources */,
    2749427502                                FEDEF84116797108000E444A /* DatabaseStrategy.cpp in Sources */,
  • trunk/Source/WebCore/page/FrameView.cpp

    r174875 r175494  
    3636#include "ChromeClient.h"
    3737#include "DOMWindow.h"
     38#include "DebugPageOverlays.h"
    3839#include "DocumentMarkerController.h"
    3940#include "EventHandler.h"
     
    13941395
    13951396    InspectorInstrumentation::didLayout(cookie, root);
     1397    if (frame().isMainFrame())
     1398        DebugPageOverlays::didLayout(frame().mainFrame());
    13961399
    13971400    --m_nestedLayoutCount;
  • trunk/Source/WebCore/page/Settings.h

    r175400 r175494  
    6161};
    6262
     63enum DebugOverlayRegionFlags {
     64    NonFastScrollableRegion = 1 << 0,
     65    WheelEventHandlerRegion = 1 << 1,
     66};
     67
     68typedef unsigned DebugOverlayRegions;
     69
    6370class Settings : public RefCounted<Settings> {
    6471    WTF_MAKE_NONCOPYABLE(Settings); WTF_MAKE_FAST_ALLOCATED;
  • trunk/Source/WebCore/page/Settings.in

    r174524 r175494  
    6060showDebugBorders initial=false, setNeedsStyleRecalcInAllFrames=1
    6161showRepaintCounter initial=false, setNeedsStyleRecalcInAllFrames=1
     62visibleDebugOverlayRegions type=DebugOverlayRegions, initial=0
    6263
    6364# This is a quirk we are pro-actively applying to old applications. It changes keyboard event dispatching,
  • trunk/Source/WebKit2/ChangeLog

    r175491 r175494  
     12014-11-03  Simon Fraser  <simon.fraser@apple.com>
     2
     3        Add page overlays that show regions with mouseWheel event handlers, and the non-fast-scrollable region, and code to toggle them in MiniBrowser WK2
     4        https://bugs.webkit.org/show_bug.cgi?id=138257
     5
     6        Reviewed by Tim Horton.
     7       
     8        Add private prefs to control visibility of debug-related page region overlays.
     9
     10        * Shared/WebPreferencesDefinitions.h:
     11        * UIProcess/API/Cocoa/WKPreferences.mm:
     12        (-[WKPreferences _visibleDebugOverlayRegions]):
     13        (-[WKPreferences _setVisibleDebugOverlayRegions:]):
     14        * UIProcess/API/Cocoa/WKPreferencesPrivate.h:
     15        * UIProcess/mac/WebPreferencesMac.mm:
     16        (WebKit::setDebugUInt32ValueIfInUserDefaults):
     17        * WebProcess/WebPage/WebPage.cpp:
     18        (WebKit::WebPage::updatePreferences):
     19        * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm:
     20        (WebKit::RemoteLayerTreeDrawingArea::updatePreferences): Update the overlays.
     21        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
     22        (WebKit::TiledCoreAnimationDrawingArea::updatePreferences): Update the overlays.
     23
    1242014-11-03  Commit Queue  <commit-queue@webkit.org>
    225
  • trunk/Source/WebKit2/Shared/WebPreferencesDefinitions.h

    r175061 r175494  
    237237    \
    238238
     239#define FOR_EACH_WEBKIT_DEBUG_UINT32_PREFERENCE(macro) \
     240    macro(VisibleDebugOverlayRegions, visibleDebugOverlayRegions, UInt32, uint32_t, 0)
     241
    239242#if PLATFORM(COCOA)
    240243
     
    284287#define FOR_EACH_WEBKIT_DEBUG_PREFERENCE(macro) \
    285288    FOR_EACH_WEBKIT_DEBUG_BOOL_PREFERENCE(macro) \
     289    FOR_EACH_WEBKIT_DEBUG_UINT32_PREFERENCE(macro) \
    286290    \
    287291
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/WKPreferences.mm

    r172994 r175494  
    204204}
    205205
     206- (_WKDebugOverlayRegions)_visibleDebugOverlayRegions
     207{
     208    return _preferences->visibleDebugOverlayRegions();
     209}
     210
     211- (void)_setVisibleDebugOverlayRegions:(_WKDebugOverlayRegions)regionFlags
     212{
     213    _preferences->setVisibleDebugOverlayRegions(regionFlags);
     214}
     215
    206216- (BOOL)_developerExtrasEnabled
    207217{
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/WKPreferencesPrivate.h

    r172994 r175494  
    3838} WK_ENUM_AVAILABLE(10_10, 8_0);
    3939
     40typedef NS_OPTIONS(NSUInteger, _WKDebugOverlayRegions) {
     41    _WKNonFastScrollableRegion = 1 << 0,
     42    _WKWheelEventHandlerRegion = 1 << 1
     43} WK_ENUM_AVAILABLE(10_11, 9_0);
     44
    4045@interface WKPreferences (WKPrivate)
    4146
     
    4752@property (nonatomic, setter=_setCompositingRepaintCountersVisible:) BOOL _compositingRepaintCountersVisible;
    4853@property (nonatomic, setter=_setTiledScrollingIndicatorVisible:) BOOL _tiledScrollingIndicatorVisible;
     54@property (nonatomic, setter=_setVisibleDebugOverlayRegions:) _WKDebugOverlayRegions _visibleDebugOverlayRegions;
    4955
    5056@property (nonatomic, setter=_setDeveloperExtrasEnabled:) BOOL _developerExtrasEnabled;
  • trunk/Source/WebKit2/UIProcess/mac/WebPreferencesMac.mm

    r171928 r175494  
    132132}
    133133
     134static void setDebugUInt32ValueIfInUserDefaults(const String& identifier, const String& keyPrefix, const String& globalDebugKeyPrefix, const String& key, WebPreferencesStore& store)
     135{
     136    id object = debugUserDefaultsValue(identifier, keyPrefix, globalDebugKeyPrefix, key);
     137    if (!object)
     138        return;
     139    if (![object respondsToSelector:@selector(unsignedIntegerValue)])
     140        return;
     141
     142    store.setUInt32ValueForKey(key, [object unsignedIntegerValue]);
     143}
     144
    134145void WebPreferences::platformInitializeStore()
    135146{
  • trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp

    r175491 r175494  
    27012701    settings.setShowRepaintCounter(store.getBoolValueForKey(WebPreferencesKey::compositingRepaintCountersVisibleKey()));
    27022702    settings.setShowTiledScrollingIndicator(store.getBoolValueForKey(WebPreferencesKey::tiledScrollingIndicatorVisibleKey()));
     2703    settings.setVisibleDebugOverlayRegions(store.getUInt32ValueForKey(WebPreferencesKey::visibleDebugOverlayRegionsKey()));
     2704   
    27032705    settings.setAggressiveTileRetentionEnabled(store.getBoolValueForKey(WebPreferencesKey::aggressiveTileRetentionEnabledKey()));
    27042706    settings.setTemporaryTileCohortRetentionEnabled(store.getBoolValueForKey(WebPreferencesKey::temporaryTileCohortRetentionEnabledKey()));
  • trunk/Source/WebKit2/WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm

    r174602 r175494  
    3838#import "WebPage.h"
    3939#import "WebProcess.h"
     40#import <WebCore/DebugPageOverlays.h>
    4041#import <WebCore/Frame.h>
    4142#import <WebCore/FrameView.h>
     
    170171
    171172    m_rootLayer->setShowDebugBorder(settings.showDebugBorders());
     173
     174    if (MainFrame* mainFrame = m_webPage.mainFrame())
     175        DebugPageOverlays::settingsChanged(*mainFrame);
    172176}
    173177
  • trunk/Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm

    r174715 r175494  
    4040#import "WebProcess.h"
    4141#import <QuartzCore/QuartzCore.h>
     42#import <WebCore/DebugPageOverlays.h>
    4243#import <WebCore/FrameView.h>
    4344#import <WebCore/GraphicsContext.h>
     
    201202    settings.setFixedPositionCreatesStackingContext(true);
    202203
     204    if (MainFrame* mainFrame = m_webPage.mainFrame())
     205        DebugPageOverlays::settingsChanged(*mainFrame);
     206
    203207    bool showTiledScrollingIndicator = settings.showTiledScrollingIndicator();
    204208    if (showTiledScrollingIndicator == !!m_debugInfoLayer)
  • trunk/Tools/ChangeLog

    r175488 r175494  
     12014-11-03  Simon Fraser  <simon.fraser@apple.com>
     2
     3        Add page overlays that show regions with mouseWheel event handlers, and the non-fast-scrollable region, and code to toggle them in MiniBrowser WK2
     4        https://bugs.webkit.org/show_bug.cgi?id=138257
     5
     6        Reviewed by Tim Horton.
     7       
     8        Add a "Debug Overlays" submenu item under "WebKit2-only Settings" which allows
     9        the user to toggle region page overlays on and off. Two overlays are available,
     10        for the non-fast scrollable region, and the region of element with wheel
     11        event handlers.
     12
     13        * MiniBrowser/mac/SettingsController.h:
     14        * MiniBrowser/mac/SettingsController.m:
     15        (-[SettingsController _populateMenu]):
     16        (-[SettingsController validateMenuItem:]):
     17        (-[SettingsController nonFastScrollableRegionOverlayVisible]):
     18        (-[SettingsController wheelEventHandlerRegionOverlayVisible]):
     19        (-[SettingsController preferenceKeyForRegionOverlayTag:]):
     20        (-[SettingsController toggleDebugOverlay:]):
     21        (-[SettingsController debugOverlayVisible:]):
     22        * MiniBrowser/mac/WK2BrowserWindowController.m:
     23        (-[WK2BrowserWindowController didChangeSettings]):
     24
    1252014-11-03  Alexey Proskuryakov  <ap@apple.com>
    226
  • trunk/Tools/MiniBrowser/mac/SettingsController.h

    r171945 r175494  
    3939@property (nonatomic, readonly) BOOL layerBordersVisible;
    4040@property (nonatomic, readonly) BOOL tiledScrollingIndicatorVisible;
     41@property (nonatomic, readonly) BOOL nonFastScrollableRegionOverlayVisible;
     42@property (nonatomic, readonly) BOOL wheelEventHandlerRegionOverlayVisible;
    4143@property (nonatomic, readonly) BOOL useUISideCompositing;
    4244@property (nonatomic, readonly) BOOL subPixelCSSOMMetricsEnabled;
  • trunk/Tools/MiniBrowser/mac/SettingsController.m

    r171945 r175494  
    3636static NSString * const TiledScrollingIndicatorVisiblePreferenceKey = @"TiledScrollingIndicatorVisible";
    3737
     38static NSString * const NonFastScrollableRegionOverlayVisiblePreferenceKey = @"NonFastScrollableRegionOverlayVisible";
     39static NSString * const WheelEventHandlerRegionOverlayVisiblePreferenceKey = @"WheelEventHandlerRegionOverlayVisible";
     40
    3841static NSString * const UseTransparentWindowsPreferenceKey = @"UseTransparentWindows";
    3942static NSString * const UsePaginatedModePreferenceKey = @"UsePaginatedMode";
     
    4245// This default name intentionally overlaps with the key that WebKit2 checks when creating a view.
    4346static NSString * const UseRemoteLayerTreeDrawingAreaPreferenceKey = @"WebKit2UseRemoteLayerTreeDrawingArea";
     47
     48typedef NS_ENUM(NSInteger, DebugOverylayMenuItemTag) {
     49    NonFastScrollableRegionOverlayTag = 100,
     50    WheelEventHandlerRegionOverlayTag
     51};
    4452
    4553@implementation SettingsController
     
    95103
    96104    [self _addHeaderWithTitle:@"WebKit2-only Settings"];
     105
    97106    [self _addItemWithTitle:@"Show Tiled Scrolling Indicator" action:@selector(toggleShowTiledScrollingIndicator:) indented:YES];
    98107    [self _addItemWithTitle:@"Use UI-Side Compositing" action:@selector(toggleUseUISideCompositing:) indented:YES];
     108
     109    NSMenuItem *debugOverlaysSubmenuItem = [[NSMenuItem alloc] initWithTitle:@"Debug Overlays" action:nil keyEquivalent:@""];
     110    NSMenu *debugOverlaysMenu = [[NSMenu alloc] initWithTitle:@"Debug Overlays"];
     111    [debugOverlaysSubmenuItem setSubmenu:debugOverlaysMenu];
     112
     113    NSMenuItem *nonFastScrollableRegionItem = [[NSMenuItem alloc] initWithTitle:@"Non-fast Scrollable Region" action:@selector(toggleDebugOverlay:) keyEquivalent:@""];
     114    [nonFastScrollableRegionItem setTag:NonFastScrollableRegionOverlayTag];
     115    [nonFastScrollableRegionItem setTarget:self];
     116    [debugOverlaysMenu addItem:[nonFastScrollableRegionItem autorelease]];
     117
     118    NSMenuItem *wheelEventHandlerRegionItem = [[NSMenuItem alloc] initWithTitle:@"Wheel Event Handler Region" action:@selector(toggleDebugOverlay:) keyEquivalent:@""];
     119    [wheelEventHandlerRegionItem setTag:WheelEventHandlerRegionOverlayTag];
     120    [wheelEventHandlerRegionItem setTarget:self];
     121    [debugOverlaysMenu addItem:[wheelEventHandlerRegionItem autorelease]];
     122    [debugOverlaysMenu release];
     123   
     124    [_menu addItem:debugOverlaysSubmenuItem];
     125    [debugOverlaysSubmenuItem release];
    99126
    100127    [self _addHeaderWithTitle:@"WebKit1-only Settings"];
     
    120147    else if (action == @selector(toggleEnableSubPixelCSSOMMetrics:))
    121148        [menuItem setState:[self subPixelCSSOMMetricsEnabled] ? NSOnState : NSOffState];
     149    else if (action == @selector(toggleDebugOverlay:))
     150        [menuItem setState:[self debugOverlayVisible:menuItem] ? NSOnState : NSOffState];
    122151
    123152    return YES;
     
    200229{
    201230    return [[NSUserDefaults standardUserDefaults] boolForKey:EnableSubPixelCSSOMMetricsPreferenceKey];
     231}
     232
     233- (BOOL)nonFastScrollableRegionOverlayVisible
     234{
     235    return [[NSUserDefaults standardUserDefaults] boolForKey:NonFastScrollableRegionOverlayVisiblePreferenceKey];
     236}
     237
     238- (BOOL)wheelEventHandlerRegionOverlayVisible
     239{
     240    return [[NSUserDefaults standardUserDefaults] boolForKey:WheelEventHandlerRegionOverlayVisiblePreferenceKey];
     241}
     242
     243- (NSString *)preferenceKeyForRegionOverlayTag:(NSUInteger)tag
     244{
     245    switch (tag) {
     246    case NonFastScrollableRegionOverlayTag:
     247        return NonFastScrollableRegionOverlayVisiblePreferenceKey;
     248
     249    case WheelEventHandlerRegionOverlayTag:
     250        return WheelEventHandlerRegionOverlayVisiblePreferenceKey;
     251    }
     252    return nil;
     253}
     254
     255- (void)toggleDebugOverlay:(id)sender
     256{
     257    NSString *preferenceKey = [self preferenceKeyForRegionOverlayTag:[sender tag]];
     258    if (preferenceKey)
     259        [self _toggleBooleanDefault:preferenceKey];
     260}
     261
     262- (BOOL)debugOverlayVisible:(NSMenuItem *)menuItem
     263{
     264    NSString *preferenceKey = [self preferenceKeyForRegionOverlayTag:[menuItem tag]];
     265    if (preferenceKey)
     266        return [[NSUserDefaults standardUserDefaults] boolForKey:preferenceKey];
     267
     268    return NO;
    202269}
    203270
  • trunk/Tools/MiniBrowser/mac/WK2BrowserWindowController.m

    r172715 r175494  
    299299            _webView._paginationMode = _WKPaginationModeUnpaginated;
    300300    }
     301   
     302    NSUInteger visibleOverlayRegions = 0;
     303    if (settings.nonFastScrollableRegionOverlayVisible)
     304        visibleOverlayRegions |= _WKNonFastScrollableRegion;
     305    if (settings.wheelEventHandlerRegionOverlayVisible)
     306        visibleOverlayRegions |= _WKWheelEventHandlerRegion;
     307   
     308    preferences._visibleDebugOverlayRegions = visibleOverlayRegions;
    301309}
    302310
Note: See TracChangeset for help on using the changeset viewer.