Fix https://bugs.webkit.org/show_bug.cgi?id=20639.
[WebKit-https.git] / WebKit / mac / ChangeLog
index 6f2a445..12d5cd2 100644 (file)
@@ -1,3 +1,561 @@
+2008-09-04  Mark Rowe  <mrowe@apple.com>
+
+        Reviewed by Eric Seidel.
+
+        Fix https://bugs.webkit.org/show_bug.cgi?id=20639.
+        Bug 20639: ENABLE_DASHBOARD_SUPPORT does not need to be a FEATURE_DEFINE
+
+        * Configurations/WebKit.xcconfig: Remove ENABLE_DASHBOARD_SUPPORT from FEATURE_DEFINES.
+
+2008-09-03  Eric Seidel  <eric@webkit.org>
+
+        Reviewed by Sam.
+
+        Clean up Platform.h and add PLATFORM(CHROMIUM), PLATFORM(SKIA) and USE(V8_BINDINGS)
+
+        * Configurations/WebKit.xcconfig:
+        * WebKitPrefix.h: add rules for V8_BINDINGS
+
+2008-09-01  Adam Barth  <abarth@webkit.org>
+
+        Reviewed by Sam Weinig.
+
+        https://bugs.webkit.org/show_bug.cgi?id=19760
+
+        Add a linked-on-or-after check to prevent substitute data from loading
+        local resources on newer users of WebKit.
+
+        * Misc/WebKitVersionChecks.h:
+        * WebView/WebView.mm:
+        (-[WebView _commonInitializationWithFrameName:groupName:]):
+
+2008-08-29  Brady Eidson  <beidson@apple.com>
+
+        Reviewed by Anders
+
+        Fix regression I introducted in 35946
+        Already covered by media/video-click-dlbclick-standalone.html
+
+        * WebView/WebHTMLRepresentation.mm:
+        (-[WebHTMLRepresentation receivedData:withDataSource:]): Cancel the load here after
+          calling [WebFrame _receivedData:] which more closely follows the path taken by PluginDocuments
+
+2008-08-28  Kevin McCullough  <kmccullough@apple.com>
+
+        Reviewed by Geoff.
+
+        <rdar://problem/6095949> REGRESSION (5525.8-6527.1?): "this" is null
+        when you first hit a breakpoint in Dashcode
+        - We wanted to reset the callframe whenever eval() was called but
+        dashcode uses eval() when broken to evaluate the state of the current
+        call frame.
+
+        * WebView/WebScriptDebugger.mm:
+        (WebScriptDebugger::willExecuteProgram):
+        (WebScriptDebugger::didExecuteProgram):
+
+2008-08-27  Robert Kroeger  <rjkroege@liqui.org>
+
+        Tweaked by Sam Weinig.
+
+        Reviewed by Eric Seidel.
+
+        Fix https://bugs.webkit.org/show_bug.cgi?id=6595
+        <rdar://problem/4432150>
+        Right-click does not fire mouseup event
+
+        Adds a rightMouseUp handler to the WebHTMLView.
+
+        The added method generates mouseup events for button 2.  The result
+        is that webkit will deliver mousedown and mouseup events for button
+        2 in a fashion identical to FireFox and will retain event ordering
+        identical to Internet Explorer.
+
+        Test: fast/events/mouseup-from-button2.html
+
+        * WebView/WebHTMLView.mm:
+        (-[WebHTMLView rightMouseUp:]):
+
+2008-08-27  Timothy Hatcher  <timothy@apple.com>
+
+        Add support for support for -webkit-appearance: default-button on the Mac platform.
+
+        <rdar://problem/6173530>
+
+        Reviewed by Dave Hyatt.
+
+        * WebCoreSupport/WebSystemInterface.m:
+        (InitWebCoreSystemInterface): Init AdvanceDefaultButtonPulseAnimation.
+        * WebView/WebPreferenceKeysPrivate.h: Added WebKitApplicationChromeModeEnabledPreferenceKey.
+        * WebView/WebPreferences.mm:
+        (+[WebPreferences initialize]): Set WebKitApplicationChromeModeEnabledPreferenceKey to NO.
+        (-[WebPreferences applicationChromeModeEnabled]): Added.
+        (-[WebPreferences setApplicationChromeModeEnabledEnabled:]): Added.
+        * WebView/WebPreferencesPrivate.h:
+        * WebView/WebView.mm:
+        (-[WebView _preferencesChangedNotification:]): Call Settings::setApplicationChromeMode
+        with the value of -[WebPreferences applicationChromeModeEnabled].
+
+2008-08-27  Brady Eidson  <beidson@apple.com>
+
+        Reviewed by Anders
+
+        <rdar://problem/6134133> - Crash when loading large movie as a standalone document
+
+        * WebCoreSupport/WebFrameLoaderClient.h:
+        * WebCoreSupport/WebFrameLoaderClient.mm:
+        (WebFrameLoaderClient::pluginWillHandleLoadError):
+
+2008-08-20  Dan Bernstein  <mitz@apple.com>
+
+        Rubber-stamped by John Sullivan.
+
+        - rename shouldUpdateWhileHidden to shouldUpdateWhileOffscreen,
+          rename related methods and variables accordingly, and make
+          -setShouldUpdateWhileOffscreen: and -shouldUpdateWhileOffscreen
+          WebView API.
+
+        * WebCoreSupport/WebFrameLoaderClient.mm:
+        (WebFrameLoaderClient::transitionToCommittedForNewPage):
+        * WebView/WebFrame.mm:
+        (-[WebFrame _updateBackgroundAndUpdatesWhileOffscreen]):
+        * WebView/WebFrameInternal.h:
+        * WebView/WebHTMLView.mm:
+        (-[WebHTMLView windowWillOrderOnScreen:]):
+        * WebView/WebView.h:
+        * WebView/WebView.mm:
+        (-[WebViewPrivate init]):
+        (-[WebView setBackgroundColor:]):
+        (-[WebView setDrawsBackground:]):
+        (-[WebView setShouldUpdateWhileOffscreen:]):
+        (-[WebView shouldUpdateWhileOffscreen]):
+        * WebView/WebViewPrivate.h:
+
+2008-08-18  Mark Rowe  <mrowe@apple.com>
+
+        Reviewed by Darin Adler.
+
+        Switch to non-deprecated NSFileManager API.
+
+        In order to minimize #if's the new NSFileManager APIs have been implemented for
+        Tiger and call sites updated to use the new methods.
+
+        * Misc/WebIconDatabase.mm:
+        (importToWebCoreFormat):
+        * Misc/WebKitNSStringExtras.m:
+        (-[NSString _webkit_fixedCarbonPOSIXPath]):
+        * Misc/WebKitSystemBits.m:
+        * Misc/WebNSFileManagerExtras.h:
+        * Misc/WebNSFileManagerExtras.m: Remove implementations of methods that are not used.
+        (-[NSFileManager _webkit_backgroundRemoveFileAtPath:]):
+        (-[NSFileManager attributesOfFileSystemForPath:error:]): Implement new API for Tiger in terms of Tiger API.
+        (-[NSFileManager contentsOfDirectoryAtPath:error:]): Ditto.
+        (-[NSFileManager moveItemAtPath:toPath:error:]): Ditto.
+        (-[NSFileManager removeItemAtPath:error:]): Ditto.
+        * Plugins/WebPluginDatabase.mm:
+        (-[WebPluginDatabase _scanForNewPlugins]):
+
+2008-08-20  Josh Aas  <joshmoz@gmail.com>
+
+        Reviewed and landed by Anders.
+
+        <rdar://problem/6163636> 
+        rename NPCocoaEvent's "event" struct to "data" (20446)
+
+        * Plugins/WebNetscapePluginEventHandlerCocoa.mm:
+        (WebNetscapePluginEventHandlerCocoa::drawRect):
+        (WebNetscapePluginEventHandlerCocoa::sendMouseEvent):
+        (WebNetscapePluginEventHandlerCocoa::flagsChanged):
+        (WebNetscapePluginEventHandlerCocoa::sendKeyEvent):
+        (WebNetscapePluginEventHandlerCocoa::windowFocusChanged):
+        (WebNetscapePluginEventHandlerCocoa::focusChanged):
+
+2008-08-20  Beth Dakin  <bdakin@apple.com>
+
+        Reviewed by Darin.
+
+        Fix for <rdar://problem/6145626>
+        Allows a WebKit client to mark a frame as not-text-searchable 
+        through SPI.
+
+        * WebView/WebFrame.mm:
+        (-[WebFrame _setExcludeFromTextSearch:]):
+        * WebView/WebFramePrivate.h:
+
+2008-08-19  Alexey Proskuryakov  <ap@webkit.org>
+
+        Reviewed by Geoff Garen.
+
+        Bring back shared JSGlobalData and implicit locking, because too many clients rely on it.
+
+        * ForwardingHeaders/kjs/JSLock.h: Added.
+        * Misc/WebCoreStatistics.mm:
+        (+[WebCoreStatistics javaScriptObjectsCount]):
+        (+[WebCoreStatistics javaScriptGlobalObjectsCount]):
+        (+[WebCoreStatistics javaScriptProtectedObjectsCount]):
+        (+[WebCoreStatistics javaScriptProtectedGlobalObjectsCount]):
+        (+[WebCoreStatistics javaScriptProtectedObjectTypeCounts]):
+        (+[WebCoreStatistics shouldPrintExceptions]):
+        (+[WebCoreStatistics setShouldPrintExceptions:]):
+        (+[WebCoreStatistics javaScriptReferencedObjectsCount]):
+        * Plugins/WebBaseNetscapePluginStream.mm:
+        (-[WebBaseNetscapePluginStream wantsAllStreams]):
+        * Plugins/WebBaseNetscapePluginView.mm:
+        (-[WebBaseNetscapePluginView sendEvent:isDrawRect:]):
+        (-[WebBaseNetscapePluginView setWindowIfNecessary]):
+        (-[WebBaseNetscapePluginView start]):
+        (-[WebBaseNetscapePluginView createPluginScriptableObject]):
+        (-[WebBaseNetscapePluginView evaluateJavaScriptPluginRequest:]):
+        (-[WebBaseNetscapePluginView webFrame:didFinishLoadWithReason:]):
+        (-[WebBaseNetscapePluginView loadPluginRequest:]):
+        (-[WebBaseNetscapePluginView _printedPluginBitmap]):
+        * Plugins/WebPluginController.mm:
+        (+[WebPluginController plugInViewWithArguments:fromPluginPackage:]):
+        (-[WebPluginController startAllPlugins]):
+        (-[WebPluginController stopAllPlugins]):
+        (-[WebPluginController addPlugin:]):
+        (-[WebPluginController destroyPlugin:]):
+        (-[WebPluginController destroyAllPlugins]):
+        * WebView/WebFrame.mm:
+        (-[WebFrame _stringByEvaluatingJavaScriptFromString:forceUserGesture:]):
+        * WebView/WebScriptDebugDelegate.mm:
+        (-[WebScriptCallFrame evaluateWebScript:]):
+        * WebView/WebView.mm:
+        (-[WebView aeDescByEvaluatingJavaScriptFromString:]):
+
+2008-08-19  Timothy Hatcher  <timothy@apple.com>
+
+        Fixes the Web Inspector flashing white while resizing after
+        highlighting a page element. Calling disableScreenUpdatesUntilFlush
+        when attaching and detaching the Inspector page highlight is bad,
+        since the browser window might not flush again for a while. So screen
+        updates could be disabled for long periods of time, causing backing store
+        flashing while resizing. There is no need to call disableScreenUpdatesUntilFlush
+        when attaching or detaching the child window.
+
+        Reviewed by John Sullivan and Kevin McCullough.
+
+        * WebInspector/WebNodeHighlight.m:
+        (-[WebNodeHighlight attach]): Remove the call to disableScreenUpdatesUntilFlush.
+        (-[WebNodeHighlight detach]): Ditto.
+
+2008-08-19  Timothy Hatcher  <timothy@apple.com>
+
+        Correctly remembers the attached state of the Web Inspector so
+        it opens in that state for the next window, or next launch.
+
+        Reviewed by Kevin McCullough.
+
+        * WebCoreSupport/WebInspectorClient.mm:
+        (-[WebInspectorWindowController attach]): Set WebKitInspectorAttachedKey
+        to YES in the user defaults.
+        (-[WebInspectorWindowController detach]): Set WebKitInspectorAttachedKey
+        to NO in the user defaults.
+
+2008-08-18  Alexey Proskuryakov  <ap@webkit.org>
+
+        Reviewed by Dan Bernstein.
+
+        https://bugs.webkit.org/show_bug.cgi?id=19347
+        <rdar://problem/5977562> Input methods do not work after switching to a password field
+        and back.
+
+        Fix <rdar://problem/5522011> (The content of the password field of Safari is displayed by
+        reconversion) in a different way which doesn't conflict with context caching performed
+        by AppKit.
+
+        This original bug does not really occur in ToT or shipping Safari under Mac OS X 10.5.4,
+        because input methods are disabled in password fields. Attempting to reconvert text typed
+        with Romaji only yields a string of bullets. Still, it is probably better to match Cocoa
+        password field behavior and disable reconversion completely.
+
+        * WebView/WebHTMLView.mm:
+        (isInPasswordField): Factored out code to determine that the current selection is in
+        a password field.
+        (inputContext): Removed a hack that was breaking TSMGetActiveDocument().
+        (-[WebHTMLView attributedSubstringFromRange:]): Check for password fields.
+        (-[WebHTMLView textStorage]): Ditto.
+
+2008-08-12  Darin Adler  <darin@apple.com>
+
+        Reviewed by Geoff.
+
+        - eliminate JSValue::type()
+
+        * WebView/WebView.mm:
+        (aeDescFromJSValue): Rewrite to use the JSValue::is functions instead
+        of a switch on JSValue::type().
+
+2008-08-17  Geoffrey Garen  <ggaren@apple.com>
+
+        Reviewed by Cameron Zwarich.
+
+        Made room for a free word in JSCell.
+        
+        (Updated for JavaScriptCore changes.)
+
+2008-08-15  Mark Rowe  <mrowe@apple.com>
+
+        Rubber-stamped by Geoff Garen.
+
+        <rdar://problem/6139914> Please include a _debug version of JavaScriptCore framework
+
+        * Configurations/Base.xcconfig: Factor out the debug-only settings so that they can shared
+        between the Debug configuration and debug Production variant.
+
+2008-08-14  Sam Weinig  <sam@webkit.org>
+
+        Reviewed by Geoffrey Garen and Timothy Hatcher.
+
+        Add WebView SPI to set HTMLTokenizer yielding parameters.
+
+        * WebView/WebView.mm:
+        (-[WebView _setCustomHTMLTokenizerTimeDelay:]):
+        (-[WebView _setCustomHTMLTokenizerChunkSize:]):
+        * WebView/WebViewPrivate.h:
+
+2008-08-13  Timothy Hatcher  <timothy@apple.com>
+
+        Fixes a bug where Safari's find banner would be permanently hidden
+        when attaching or closing the Web Inspector while attached.
+
+        https://bugs.webkit.org/show_bug.cgi?id=20376
+
+        Reviewed by Kevin McCullough.
+
+        * WebCoreSupport/WebInspectorClient.mm:
+        (-[WebInspectorWindowController close]):
+        Carefully manipulate the WebFrameView's frame when closing to
+        not assume the WebFrameView's frame fills the inspected WebView.
+        (-[WebInspectorWindowController setAttachedWindowHeight:]):
+        Carefully manipulate the WebFrameView's frame when docking to
+        not assume the WebFrameView plus the Web Inspector WebViews fills
+        the full inspected WebView.
+
+2008-08-13  Stephanie Lewis  <slewis@apple.com>
+
+        fix 64bit build
+
+        * WebCoreSupport/WebInspectorClient.mm:
+
+2008-08-13  Timothy Hatcher  <timothy@apple.com>
+
+        Remember the docked state of the Web Inspector, so it can be
+        reopened docked if it was last docked.
+
+        https://bugs.webkit.org/show_bug.cgi?id=14271
+
+        Reviewed by Kevin McCullough.
+
+        * WebCoreSupport/WebInspectorClient.mm:
+        (-[WebInspectorWindowController init]): Initialize _shouldAttach
+        to the value stored in the user defaults. If there has never
+        been a value stored, default to being attached.
+        (-[WebInspectorWindowController showWindow:]): Pass the attached
+        state to InspectorController::setWindowVisible.
+
+2008-08-12  Timothy Hatcher  <timothy@apple.com>
+
+        Remove the Inspector's WebView for the view hierarchy when closed
+        while attached. This prevents it from showing in the background
+        while the page changes.
+
+        Reviewed by Kevin McCullough.
+
+        * WebCoreSupport/WebInspectorClient.mm:
+        (-[WebInspectorWindowController close:]): Call removeFromSuperview
+        on the Inspector's WebView if it isn't attached, so it will not
+        be visible when navigating pages while closed.
+
+2008-08-12  Timothy Hatcher  <timothy@apple.com>
+
+        Make the docked Web Inspector resizable.
+
+        https://bugs.webkit.org/show_bug.cgi?id=14282
+
+        Reviewed by Kevin McCullough.
+
+        * WebCoreSupport/WebInspectorClient.h:
+        * WebCoreSupport/WebInspectorClient.mm:
+        (WebInspectorClient::setAttachedWindowHeight): Call setAttachedWindowHeight:
+        on the WebInspectorWindowController.
+        (-[WebInspectorWindowController showWindow:]): Call setAttachedWindowHeight:.
+        (-[WebInspectorWindowController setAttachedWindowHeight:]): Moved code
+        from showWindow: and generalized to allow being called multiple times.
+        Remembers the last height passed, which is used by showWindow: the next
+        time the Inspector attaches.
+
+2008-08-12  Timothy Hatcher  <timothy@apple.com>
+
+        Remove unneeded header imports from some Web Inspector files.
+
+        Reviewed by Adam Roben.
+
+        * WebCoreSupport/WebInspectorClient.mm:
+        * WebInspector/WebInspector.mm:
+        * WebInspector/WebNodeHighlightView.m:
+
+2008-08-12  Timothy Hatcher  <timothy@apple.com>
+
+        Remove the call to WKNSWindowMakeBottomCornersSquare on the
+        Web Inspector's window. This isn't needed anymore since the
+        window style masks used always have square bottom corners.
+
+        Reviewed by Adam Roben.
+
+        * WebCoreSupport/WebInspectorClient.mm:
+        (-[WebInspectorWindowController window]): Remove the call
+        to WKNSWindowMakeBottomCornersSquare.
+
+2008-08-12  Timothy Hatcher  <timothy@apple.com>
+
+        Make attaching and detaching the Web Inspector instantaneous.
+        This also preserves the current view, other state, and keeps
+        the script debugger attached.
+
+        https://bugs.webkit.org/show_bug.cgi?id=19301
+
+        Reviewed by Adam Roben.
+
+        * WebCoreSupport/WebInspectorClient.mm:
+        (-[WebInspectorWindowController close]): Only call setWindowVisible(false)
+        when not moving windows.
+
+2008-08-12  Dan Bernstein  <mitz@apple.com>
+
+        Reviewed by John Sullivan.
+
+        - replace -[WebPreferences updatesWhenOffscreen] with -[WebView shouldUpdateWhileHidden]
+
+        * WebCoreSupport/WebFrameLoaderClient.mm:
+        (WebFrameLoaderClient::transitionToCommittedForNewPage):
+        * WebView/WebFrame.mm:
+        (-[WebFrame _updateBackgroundAndUpdatesWhileHidden]):
+        * WebView/WebFrameInternal.h:
+        * WebView/WebHTMLView.mm:
+        (-[WebHTMLView windowWillOrderOnScreen:]):
+        * WebView/WebPreferenceKeysPrivate.h:
+        * WebView/WebPreferences.mm:
+        (+[WebPreferences initialize]):
+        * WebView/WebPreferencesPrivate.h:
+        * WebView/WebView.mm:
+        (-[WebViewPrivate init]):
+        (-[WebView _preferencesChangedNotification:]):
+        (-[WebView setBackgroundColor:]):
+        (-[WebView setDrawsBackground:]):
+        (-[WebView shouldUpdateWhileHidden]):
+        (-[WebView setShouldUpdateWhileHidden:]):
+        * WebView/WebViewPrivate.h:
+
+2008-08-08  Dan Bernstein  <mitz@apple.com>
+
+        Reviewed by John Sullivan.
+
+        - fix <rdar://problem/6130216> Exception "windowRegionBeingDrawn != nil" in NSView when caching image of a subframe
+
+        This change reintroduces <https://bugs.webkit.org/show_bug.cgi?id=5195> on Leopard.
+
+        * WebView/WebHTMLView.mm:
+        (-[WebHTMLView _recursive:displayRectIgnoringOpacity:inContext:topView:]): Removed an
+        unsuccessful workaround for <rdar://problem/5668489>, because invoking
+        layout may change the view hierarchy during the drawing operation,
+        which is not supported on Leopard.
+
+2008-08-08  Maxime Britto  <britto@apple.com>
+
+        Reviewed by Adele.
+
+        * WebView/WebFrame.mm:
+        (-[WebFrame _scrollDOMRangeToVisible:]):
+
+2008-08-08  Brady Eidson  <beidson@apple.com>
+
+        Reviewed by Sam Weinig
+
+        Fix for <rdar://problem/5865504>
+
+        This bug was actually *largely* fixed by http://trac.webkit.org/changeset/35538.
+        But with that same patch, it became possible for a WebResource to fail to initialize.  
+        Therefore we were trying to add nil to an NSCFArray for certain situations, which is bad.
+        Lets fix that, shall we?
+
+        * WebView/WebArchive.mm:
+        (-[WebArchive subresources]): 
+
+2008-08-06  Eric Seidel  <eric@webkit.org>
+
+        Reviewed by Cameron Zwarich.
+
+        Move more methods from Frame into ScriptController
+        https://bugs.webkit.org/show_bug.cgi?id=20294
+
+        The WebKit side of this move.  Calls to frame() are now frame()->script()
+
+        * Plugins/WebBaseNetscapePluginView.mm:
+        (-[WebBaseNetscapePluginView getVariable:value:]):
+        (-[WebBaseNetscapePluginView _destroyPlugin]):
+        * Plugins/WebPluginController.mm:
+        (-[WebPluginController destroyPlugin:]):
+        (-[WebPluginController destroyAllPlugins]):
+        * WebCoreSupport/WebFrameLoaderClient.mm:
+        * WebView/WebFrame.mm:
+        (-[WebFrame windowObject]):
+        * WebView/WebScriptDebugger.mm:
+        (WebScriptDebugger::callEvent):
+        * WebView/WebView.mm:
+        (-[WebView windowScriptObject]):
+
+2008-08-06  Dan Bernstein  <mitz@apple.com>
+
+        Reviewed by Mark Rowe.
+
+        - fix an assertion failure in Cache::setCapacities()
+
+        * Misc/WebKitSystemBits.h: Changed the return type of WebMemorySize()
+        to uint64_t.
+        * Misc/WebKitSystemBits.m:
+        (WebMemorySize):
+        * WebView/WebView.mm:
+        (+[WebView _setCacheModel:]):
+
+2008-08-05  Anders Carlsson  <andersca@apple.com>
+
+        Pass in the correct class here.
+        
+        * WebView/WebResource.mm:
+        (-[WebResourcePrivate dealloc]):
+
+2008-08-05  Anders Carlsson  <andersca@apple.com>
+
+        Reviewed by Darin.
+
+        <rdar://problem/6037398>
+        ER: Deallocate WebKit objects on the main thread, even if released on secondary thread
+        
+        Add calls to WebCoreObjCScheduleDeallocateOnMainThread in dealloc methods of objects we expose.
+
+        * Carbon/CarbonWindowAdapter.m:
+        (-[CarbonWindowAdapter dealloc]):
+        * History/WebBackForwardList.mm:
+        (-[WebBackForwardList dealloc]):
+        * History/WebHistoryItem.mm:
+        (-[WebHistoryItem dealloc]):
+        * Misc/WebElementDictionary.mm:
+        (+[WebElementDictionary initialize]):
+        (-[WebElementDictionary dealloc]):
+        * WebCoreSupport/WebEditorClient.mm:
+        (-[WebEditCommand dealloc]):
+        * WebCoreSupport/WebFrameLoaderClient.mm:
+        * WebView/WebArchive.mm:
+        (-[WebArchivePrivate dealloc]):
+        * WebView/WebDataSource.mm:
+        (-[WebDataSourcePrivate dealloc]):
+        * WebView/WebHTMLView.mm:
+        (-[WebHTMLViewPrivate dealloc]):
+        (-[WebHTMLView dealloc]):
+        * WebView/WebResource.mm:
+        (-[WebResourcePrivate dealloc]):
+
 2008-08-05  Anders Carlsson  <andersca@apple.com>
 
         Reviewed by Darin.
 2008-08-05  Anders Carlsson  <andersca@apple.com>
 
         Reviewed by Darin.