10bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch/* 20bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. 3967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch * Copyright (C) 2010 Igalia S.L 40bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * 50bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * Redistribution and use in source and binary forms, with or without 60bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * modification, are permitted provided that the following conditions 70bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * are met: 80bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * 90bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * 1. Redistributions of source code must retain the above copyright 100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * notice, this list of conditions and the following disclaimer. 110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * 2. Redistributions in binary form must reproduce the above copyright 120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * notice, this list of conditions and the following disclaimer in the 130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * documentation and/or other materials provided with the distribution. 140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of 150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * its contributors may be used to endorse or promote products derived 160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * from this software without specific prior written permission. 170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * 180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY 190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY 220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch */ 290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#import "WebTypesInternal.h" 310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#import "WebDelegateImplementationCaching.h" 320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#import <WebCore/PlatformString.h> 330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#import <WebCore/WebCoreKeyboardUIMode.h> 340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#import <wtf/HashMap.h> 350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#import <wtf/RetainPtr.h> 360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochnamespace WebCore { 3881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch class HistoryItem; 390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch class Page; 400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch@class WebInspector; 430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch@class WebNodeHighlight; 440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch@class WebPluginDatabase; 450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch@class WebPreferences; 460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch@class WebTextCompletionController; 470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch@protocol WebFormDelegate; 485abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick@protocol WebDeviceOrientationProvider; 49d0825bca7fe65beaee391d30da42e937db621564Steve Block@protocol WebGeolocationProvider; 50231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#if ENABLE(VIDEO) 51231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block@class WebVideoFullscreenController; 52231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#endif 53cad810f21b803229eb11403f9209855525a25d57Steve Block#if ENABLE(FULLSCREEN_API) 54cad810f21b803229eb11403f9209855525a25d57Steve Block@class WebFullScreenController; 55cad810f21b803229eb11403f9209855525a25d57Steve Block#endif 560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochextern BOOL applicationIsTerminating; 580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochextern int pluginDatabaseClientCount; 590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch// FIXME: This should be renamed to WebViewData. 610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch@interface WebViewPrivate : NSObject { 620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch@public 630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch WebCore::Page* page; 640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch id UIDelegate; 660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch id UIDelegateForwarder; 670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch id resourceProgressDelegate; 680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch id downloadDelegate; 690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch id policyDelegate; 700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch id policyDelegateForwarder; 710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch id frameLoadDelegate; 720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch id frameLoadDelegateForwarder; 730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch id <WebFormDelegate> formDelegate; 740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch id editingDelegate; 750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch id editingDelegateForwarder; 760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch id scriptDebugDelegate; 77231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block id historyDelegate; 780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch WebInspector *inspector; 800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch WebNodeHighlight *currentNodeHighlight; 810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch BOOL allowsUndo; 830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch float zoomMultiplier; 8568513a70bcd92384395513322f1b801e7bf9c729Steve Block BOOL zoomsTextOnly; 860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch NSString *applicationNameForUserAgent; 88dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch WTF::String userAgent; 890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch BOOL userAgentOverridden; 900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch WebPreferences *preferences; 920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch BOOL useSiteSpecificSpoofing; 930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch NSWindow *hostWindow; 950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch int programmaticFocusCount; 970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch WebResourceDelegateImplementationCache resourceLoadDelegateImplementations; 990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch WebFrameLoadDelegateImplementationCache frameLoadDelegateImplementations; 1000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch WebScriptDebugDelegateImplementationCache scriptDebugDelegateImplementations; 101231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block WebHistoryDelegateImplementationCache historyDelegateImplementations; 1020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch void *observationInfo; 1040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch BOOL closed; 1060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch BOOL shouldCloseWithWindow; 1070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch BOOL mainFrameDocumentReady; 1080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch BOOL drawsBackground; 1090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch BOOL tabKeyCyclesThroughElementsChanged; 1100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch BOOL becomingFirstResponder; 1110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch BOOL becomingFirstResponderFromOutside; 1120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch BOOL hoverFeedbackSuspended; 1130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch BOOL usesPageCache; 1140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch BOOL catchesDelegateExceptions; 115231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block BOOL cssAnimationsSuspended; 1160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch NSColor *backgroundColor; 1180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch NSString *mediaStyle; 1200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch BOOL hasSpellCheckerDocumentTag; 1220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch NSInteger spellCheckerDocumentTag; 1230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch BOOL smartInsertDeleteEnabled; 1250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch BOOL selectTrailingWhitespaceEnabled; 1260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#if ENABLE(DASHBOARD_SUPPORT) 1280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch BOOL dashboardBehaviorAlwaysSendMouseEventsToAllWindows; 1290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch BOOL dashboardBehaviorAlwaysSendActiveNullEventsToPlugIns; 1300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch BOOL dashboardBehaviorAlwaysAcceptsFirstMouse; 1310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch BOOL dashboardBehaviorAllowWheelScrolling; 1320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#endif 1330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // WebKit has both a global plug-in database and a separate, per WebView plug-in database. Dashboard uses the per WebView database. 1350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch WebPluginDatabase *pluginDatabase; 1360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch HashMap<unsigned long, RetainPtr<id> > identifierMap; 1380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch BOOL _keyboardUIModeAccessed; 1400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch WebCore::KeyboardUIMode _keyboardUIMode; 1410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch BOOL shouldUpdateWhileOffscreen; 1430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 144e14391e94c850b8bd03680c23b38978db68687a8John Reck // When this flag is unset, we will not make any subviews underneath this WebView. This means no WebFrameViews and no WebHTMLViews. 1450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch BOOL usesDocumentViews; 146692e5dbf12901edacf14812a6fae25462920af42Steve Block 147692e5dbf12901edacf14812a6fae25462920af42Steve Block BOOL includesFlattenedCompositingLayersWhenDrawingToBitmap; 1480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#if USE(ACCELERATED_COMPOSITING) 1500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // When this flag is set, next time a WebHTMLView draws, it needs to temporarily disable screen updates 1510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // so that the NSView drawing is visually synchronized with CALayer updates. 1520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch BOOL needsOneShotDrawingSynchronization; 153643ca7872b450ea4efacab6188849e5aac2ba161Steve Block BOOL postsAcceleratedCompositingNotifications; 1540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Run loop observer used to implement the compositing equivalent of -viewWillDraw 1550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch CFRunLoopObserverRef layerSyncRunLoopObserver; 1560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#endif 1570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch NSPasteboard *insertionPasteboard; 1590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch NSSize lastLayoutSize; 1610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch BOOL ignoringMouseDraggedEvents; 1630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch NSEvent *mouseDownEvent; // Kept after handling the event. 1650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch BOOL handlingMouseDownEvent; 1660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch NSEvent *keyDownEvent; // Kept after handling the event. 1670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch WebTextCompletionController *completionController; 1690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch NSTimer *autoscrollTimer; 1710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch NSEvent *autoscrollTriggerEvent; 1720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch CFRunLoopTimerRef updateMouseoverTimer; 174231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#if ENABLE(VIDEO) 175231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block WebVideoFullscreenController *fullscreenController; 176231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#endif 177cad810f21b803229eb11403f9209855525a25d57Steve Block 178cad810f21b803229eb11403f9209855525a25d57Steve Block#if ENABLE(FULLSCREEN_API) 179cad810f21b803229eb11403f9209855525a25d57Steve Block WebFullScreenController *newFullscreenController; 180cad810f21b803229eb11403f9209855525a25d57Steve Block#endif 181d0825bca7fe65beaee391d30da42e937db621564Steve Block 182a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch#if ENABLE(GLIB_SUPPORT) 183ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block CFRunLoopObserverRef glibRunLoopObserver; 184ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block#endif 185d0825bca7fe65beaee391d30da42e937db621564Steve Block id<WebGeolocationProvider> _geolocationProvider; 1865abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick id<WebDeviceOrientationProvider> m_deviceOrientationProvider; 18781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 18881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch RefPtr<WebCore::HistoryItem> _globalHistoryItem; 1892bde8e466a4451c7319e3a072d118917957d6554Steve Block 1902bde8e466a4451c7319e3a072d118917957d6554Steve Block BOOL interactiveFormValidationEnabled; 1912bde8e466a4451c7319e3a072d118917957d6554Steve Block int validationMessageTimerMagnification; 1920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 1930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch@end 194