Changeset 23677 in webkit


Ignore:
Timestamp:
Jun 20, 2007 6:37:24 PM (17 years ago)
Author:
aroben
Message:

Land the new Inspector.

WebCore:

Land the new Inspector.

Co-written with Tim Hatcher.

Reviewed by Anders, Adele, Hyatt, and Sam.

No regression tests possible.

Add a new InspectorController that is in charge of the Inspector. It
has an InspectorClient that controls the Inspector's window and node
highlight.

  • page/InspectorClient.h: Added. (WebCore::InspectorClient::~InspectorClient):
  • page/InspectorController.cpp: Added. (WebCore::ConsoleMessage::ConsoleMessage): (WebCore::InspectorResource::): Represents a single resource that the Inspector knows about. (WebCore::InspectorResource::InspectorResource): (WebCore::InspectorResource::~InspectorResource): (WebCore::InspectorResource::type): (WebCore::InspectorResource::setScriptObject): (WebCore::addSourceToFrame): Callback available from JS. (WebCore::getResourceDocumentNode): Ditto. (WebCore::highlightDOMNode): Ditto. (WebCore::hideDOMNodeHighlight): Ditto. (WebCore::loaded): Ditto. (WebCore::unloading): Ditto. (WebCore::attach): Ditto. (WebCore::detach): Ditto. (WebCore::log): Ditto. (WebCore::search): Ditto. (WebCore::inspectedWindow): Ditto. (WebCore::InspectorController::InspectorController): (WebCore::InspectorController::~InspectorController): (WebCore::InspectorController::inspect): Called by ContextMenuController to inspect a node. (WebCore::InspectorController::focusNode): (WebCore::InspectorController::highlight): (WebCore::InspectorController::hideHighlight): (WebCore::InspectorController::windowVisible): (WebCore::InspectorController::setWindowVisible): (WebCore::InspectorController::addMessageToConsole): (WebCore::InspectorController::attachWindow): (WebCore::InspectorController::detachWindow): (WebCore::InspectorController::windowScriptObjectAvailable): (WebCore::InspectorController::scriptObjectReady): (WebCore::InspectorController::windowUnloading): (WebCore::addHeaders): Static helper function. (WebCore::objectForRequest): Ditto. (WebCore::objectForResponse): Ditto. (WebCore::InspectorController::addScriptResource): (WebCore::InspectorController::addAndUpdateScriptResource): (WebCore::InspectorController::removeScriptResource): (WebCore::InspectorController::updateScriptResource): (WebCore::InspectorController::populateScriptResources): (WebCore::InspectorController::addScriptConsoleMessage): (WebCore::callClearFunction): Static helper function. (WebCore::InspectorController::clearScriptResources): (WebCore::InspectorController::clearScriptConsoleMessages): (WebCore::InspectorController::clearNetworkTimeline): (WebCore::InspectorController::pruneResources): (WebCore::InspectorController::didCommitLoad): Callback from FrameLoader. (WebCore::InspectorController::frameDetachedFromParent): Ditto. (WebCore::InspectorController::addResource): Ditto. (WebCore::InspectorController::removeResource): Ditto. (WebCore::InspectorController::didLoadResourceFromMemoryCache): Ditto. (WebCore::InspectorController::identifierForInitialRequest): Ditto. (WebCore::InspectorController::willSendRequest): Ditto. (WebCore::InspectorController::didReceiveResponse): Ditto. (WebCore::InspectorController::didReceiveContentLength): Ditto. (WebCore::InspectorController::didFinishLoading): Ditto. (WebCore::InspectorController::didFailLoading): Ditto.
  • page/InspectorController.h: Added. (WebCore::InspectorController::inspectedPage): (WebCore::InspectorController::scriptContext): (WebCore::InspectorController::setScriptContext): (WebCore::InspectorController::resources): (WebCore::InspectorController::removeAllResources):

Add the JavaScript that defines most of the behavior of the Inspector.

  • page/inspector/ConsolePanel.js: Added.
  • page/inspector/NetworkPanel.js: Added.
  • page/inspector/Resource.js: Added.
  • page/inspector/ResourceCategory.js: Added.
  • page/inspector/ResourcePanel.js: Added.
  • page/inspector/inspector.js: Added.
  • page/inspector/treeoutline.js: Renamed from WebKit/WebInspector/webInspector/treeoutline.js.
  • page/inspector/utilities.js: Added.

Add the Inspector's CSS and HTML.

  • page/inspector/inspector.css: Added.
  • page/inspector/inspector.html: Added.

Hang the InspectorController off of Page. We only create an
InspectorController if an InspectorClient is given to the Page.

  • page/Page.cpp: (WebCore::Page::Page):
  • page/Page.h: (WebCore::Page::inspectorController):

Use FrameLoader to notify the InspectorController of resource loads.

  • loader/FrameLoader.cpp: (WebCore::FrameLoader::begin): (WebCore::FrameLoader::transitionToCommitted): (WebCore::FrameLoader::continueLoadAfterWillSubmitForm): (WebCore::FrameLoader::detachFromParent): (WebCore::FrameLoader::assignIdentifierToInitialRequest): (WebCore::FrameLoader::willSendRequest): (WebCore::FrameLoader::didReceiveResponse): (WebCore::FrameLoader::didReceiveData): (WebCore::FrameLoader::sendRemainingDelegateMessages): (WebCore::FrameLoader::requestFromDelegate): (WebCore::FrameLoader::didFinishLoad): (WebCore::FrameLoader::dispatchWindowObjectAvailable): (WebCore::FrameLoader::dispatchDidCommitLoad): (WebCore::FrameLoader::dispatchAssignIdentifierToInitialRequest): (WebCore::FrameLoader::dispatchWillSendRequest): (WebCore::FrameLoader::dispatchDidReceiveResponse): (WebCore::FrameLoader::dispatchDidReceiveContentLength): (WebCore::FrameLoader::dispatchDidFinishLoading): (WebCore::FrameLoader::dispatchDidLoadResourceFromMemoryCache):
  • loader/FrameLoader.h:

Send console messages to the InspectorController.

  • page/Chrome.cpp: (WebCore::Chrome::addMessageToConsole): Send all console messages to the InspectorController.
  • page/Chrome.h: Add a new MessageLevel and MessageSource that are used in the Inspector JS.

Report HTML errors when the Inspector window is open.
We don't report errors when the window is closed because we don't want
to slow down the HTMLTokenizer.

  • html/HTMLDocument.cpp: (WebCore::HTMLDocument::createTokenizer):
  • html/HTMLParser.cpp: (WebCore::HTMLParser::HTMLParser):
  • html/HTMLParser.h:
  • html/HTMLTokenizer.cpp: (WebCore::HTMLTokenizer::HTMLTokenizer):
  • html/HTMLTokenizer.h:

Append the "Inspect Element" context menu item after passing the
context menu to the ContextMenuClient. This work used to be done in
WebKit.

  • page/ContextMenuClient.h:
  • page/ContextMenuController.cpp: (WebCore::ContextMenuController::handleContextMenuEvent): Add the "Inspect Element" item. (WebCore::ContextMenuController::contextMenuItemSelected): Handle the "Inspect Element" item.
  • platform/ContextMenu.cpp: (WebCore::ContextMenu::addInspectElementItem): (WebCore::ContextMenu::checkOrEnableIfNeeded): Updated for "Inspect Element" item.
  • platform/ContextMenu.h:
  • platform/ContextMenuItem.h: (WebCore::): Add ContextMenuItemTagInspectElement.
  • platform/graphics/svg/SVGImageEmptyClients.h:
  • page/mac/WebCoreViewFactory.h: Add the "Inspect Element" localized string.
  • platform/LocalizedStrings.h: Ditto.
  • platform/mac/LocalizedStringsMac.mm: (WebCore::contextMenuItemTagInspectElement): Ditto.

Miscellaneous changes:

  • css/view-source.css: Add message bubble styles.
  • loader/DocumentLoader.h: Add a frame getter.
  • platform/win/ScrollViewWin.cpp: (WebCore::ScrollView::updateScrollbars): Respect Frame::prohibitsScrolling.

Add new images needed for the Inspector.

  • page/inspector/Images/attachedShadow.png: Added.
  • page/inspector/Images/bottomShadow.png: Added.
  • page/inspector/Images/breadcrumbBackground.png: Added.
  • page/inspector/Images/checker.png: Added.
  • page/inspector/Images/console.png: Added.
  • page/inspector/Images/darkShadow.png: Added.
  • page/inspector/Images/disclosureDownPressed.png: Added.
  • page/inspector/Images/disclosureRightDown.png: Added.
  • page/inspector/Images/disclosureRightPressed.png: Added.
  • page/inspector/Images/document.png: Added.
  • page/inspector/Images/domViewButton.png: Added.
  • page/inspector/Images/domViewButtonSelected.png: Added.
  • page/inspector/Images/downTriangle.png: Added.
  • page/inspector/Images/errorIcon.png: Added.
  • page/inspector/Images/errorMediumIcon.png: Added.
  • page/inspector/Images/folder.png: Added.
  • page/inspector/Images/goArrow.png: Added.
  • page/inspector/Images/gradient.png: Added.
  • page/inspector/Images/gradientHighlight.png: Added.
  • page/inspector/Images/gradientHighlightBottom.png: Added.
  • page/inspector/Images/hideStatusWidget.png: Added.
  • page/inspector/Images/hideStatusWidgetPressed.png: Added.
  • page/inspector/Images/network.png: Added.
  • page/inspector/Images/paneBottomGrow.png: Added.
  • page/inspector/Images/paneBottomGrowActive.png: Added.
  • page/inspector/Images/paneGrowHandleLine.png: Added.
  • page/inspector/Images/paneHeader.png: Added.
  • page/inspector/Images/paneHeaderActive.png: Added.
  • page/inspector/Images/plainDocument.png: Added.
  • page/inspector/Images/popupArrows.png: Added.
  • page/inspector/Images/rightTriangle.png: Added.
  • page/inspector/Images/segment.png: Added.
  • page/inspector/Images/segmentEnd.png: Added.
  • page/inspector/Images/segmentHover.png: Added.
  • page/inspector/Images/segmentHoverEnd.png: Added.
  • page/inspector/Images/segmentSelected.png: Added.
  • page/inspector/Images/segmentSelectedEnd.png: Added.
  • page/inspector/Images/showStatusWidget.png: Added.
  • page/inspector/Images/showStatusWidgetPressed.png: Added.
  • page/inspector/Images/sidbarItemBackground.png: Added.
  • page/inspector/Images/sidebarActionWidget.png: Added.
  • page/inspector/Images/sidebarActionWidgetPressed.png: Added.
  • page/inspector/Images/sidebarAttachWidget.png: Added.
  • page/inspector/Images/sidebarAttachWidgetPressed.png: Added.
  • page/inspector/Images/sidebarDetachWidget.png: Added.
  • page/inspector/Images/sidebarDetachWidgetPressed.png: Added.
  • page/inspector/Images/sidebarResizeWidget.png: Added.
  • page/inspector/Images/sidebarSelection.png: Added.
  • page/inspector/Images/sidebarSelectionBlurred.png: Added.
  • page/inspector/Images/sidebarSelectionBlurredTall.png: Added.
  • page/inspector/Images/sidebarSelectionGray.png: Added.
  • page/inspector/Images/sidebarSelectionGrayTall.png: Added.
  • page/inspector/Images/sidebarSelectionTall.png: Added.
  • page/inspector/Images/sidebarStatusAreaBackground.png: Added.
  • page/inspector/Images/sourceViewButton.png: Added.
  • page/inspector/Images/sourceViewButtonSelected.png: Added.
  • page/inspector/Images/splitviewDimple.png: Added.
  • page/inspector/Images/splitviewDividerBackground.png: Added.
  • page/inspector/Images/tab.png: Added.
  • page/inspector/Images/tabSelected.png: Added.
  • page/inspector/Images/timelinePillBlue.png: Added.
  • page/inspector/Images/timelinePillGray.png: Added.
  • page/inspector/Images/timelinePillGreen.png: Added.
  • page/inspector/Images/timelinePillOrange.png: Added.
  • page/inspector/Images/timelinePillPurple.png: Added.
  • page/inspector/Images/timelinePillRed.png: Added.
  • page/inspector/Images/timelinePillYellow.png: Added.
  • page/inspector/Images/tipBalloon.png: Added.
  • page/inspector/Images/tipBalloonBottom.png: Added.
  • page/inspector/Images/tipIcon.png: Added.
  • page/inspector/Images/tipIconPressed.png: Added.
  • page/inspector/Images/toggleDown.png: Added.
  • page/inspector/Images/toggleUp.png: Added.
  • page/inspector/Images/toolbarBackground.png: Added.
  • page/inspector/Images/toolbarBackgroundInactive.png: Added.
  • page/inspector/Images/toolbarButton.png: Added.
  • page/inspector/Images/toolbarButtonInactive.png: Added.
  • page/inspector/Images/toolbarButtonPressed.png: Added.
  • page/inspector/Images/toolbarButtonPressedInactive.png: Added.
  • page/inspector/Images/toolbarSplitButtonDivider.png: Added.
  • page/inspector/Images/toolbarSplitButtonDividerInactive.png: Added.
  • page/inspector/Images/treeDownTriangleBlack.png: Added.
  • page/inspector/Images/treeDownTriangleWhite.png: Added.
  • page/inspector/Images/treeLeftTriangleBlack.png: Added.
  • page/inspector/Images/treeRightTriangleBlack.png: Added.
  • page/inspector/Images/treeRightTriangleWhite.png: Added.
  • page/inspector/Images/warningIcon.png: Added.
  • page/inspector/Images/warningMediumIcon.png: Added.
  • page/inspector/Images/warningsErrors.png: Added.

Build-fu:

  • WebCore.exp: Added new symbols.
  • WebCore.xcodeproj/project.pbxproj: Added new source files and resources.
  • WebCore.vcproj/WebCore.vcproj: Ditto, and copy the resources to $WebKitOutputDir.

Windows build fixes:

  • history/HistoryItem.h: ResourceRequest is a struct.
  • loader/FrameLoaderClient.h: Ditto.

WebKit:

Land the new Inspector.

Co-written with Tim Hatcher.

Reviewed by Anders, Adele, Hyatt, and Sam.

Implement the InspectorClient interface.

  • WebCoreSupport/WebInspectorClient.h: Added.
  • WebCoreSupport/WebInspectorClient.mm: Added. (WebInspectorClient::WebInspectorClient): (WebInspectorClient::inspectorDestroyed): (WebInspectorClient::createPage): (WebInspectorClient::showWindow): (WebInspectorClient::closeWindow): (WebInspectorClient::attachWindow): (WebInspectorClient::detachWindow): (WebInspectorClient::highlight): (WebInspectorClient::hideHighlight): (WebInspectorClient::inspectedURLChanged): (WebInspectorClient::updateWindowTitle): (-[WebInspectorWindowController init]): (-[WebInspectorWindowController initWithInspectedWebView:]): (-[WebInspectorWindowController dealloc]): (-[WebInspectorWindowController inspectorVisible]): (-[WebInspectorWindowController webView]): (-[WebInspectorWindowController window]): (-[WebInspectorWindowController windowShouldClose:]): (-[WebInspectorWindowController close]): (-[WebInspectorWindowController showWindow:]): (-[WebInspectorWindowController attach]): (-[WebInspectorWindowController detach]): (-[WebInspectorWindowController highlightAndScrollToNode:]): (-[WebInspectorWindowController highlightNode:]): (-[WebInspectorWindowController hideHighlight]): (-[WebInspectorWindowController animationDidEnd:]):

Add an easier-to-see highlight.

  • Misc/WebNSViewExtras.h:
  • Misc/WebNSViewExtras.m: (-[NSView _web_convertRect:toView:]):
  • WebInspector/WebNodeHighlight.h:
  • WebInspector/WebNodeHighlight.m: (-[WebNodeHighlightFadeInAnimation setCurrentProgress:]): (-[WebNodeHighlight initWithTargetView:]): (-[WebNodeHighlight setHighlightedNode:]): (-[WebNodeHighlight highlightedNode]): (-[WebNodeHighlight dealloc]): (-[WebNodeHighlight attachHighlight]): (-[WebNodeHighlight delegate]): (-[WebNodeHighlight detachHighlight]): (-[WebNodeHighlight show]): (-[WebNodeHighlight hide]): (-[WebNodeHighlight animationDidEnd:]): (-[WebNodeHighlight ignoresMouseEvents]): (-[WebNodeHighlight highlightView]): (-[WebNodeHighlight setDelegate:]): (-[WebNodeHighlight setHolesNeedUpdateInTargetViewRect:]): (-[WebNodeHighlight setIgnoresMouseEvents:]): (-[WebNodeHighlight targetView]): (-[WebNodeHighlight _computeHighlightWindowFrame]): (-[WebNodeHighlight _repositionHighlightWindow]):
  • WebInspector/WebNodeHighlightView.h:
  • WebInspector/WebNodeHighlightView.m: (-[WebNodeHighlightView initWithWebNodeHighlight:]): (-[WebNodeHighlightView dealloc]): (-[WebNodeHighlightView detachFromWebNodeHighlight]): (-[WebNodeHighlightView drawRect:]): (-[WebNodeHighlightView webNodeHighlight]): (-[WebNodeHighlightView fractionFadedIn]): (-[WebNodeHighlightView setFractionFadedIn:]): (-[WebNodeHighlightView setHolesNeedUpdateInRect:]): (-[WebNodeHighlightView _holes]):

WebView changes needed for the new Inspector.

  • WebView/WebView.mm: Remove the old _inspectElement method now that this is handled by WebCore. (-[WebView _isClosed]): Added. (-[WebView initWithFrame]): Give each Page an InspectorClient to enable the Inspector.
  • WebView/WebViewPrivate.h:

Updates needed for WebCore changes.

  • WebCoreSupport/WebContextMenuClient.h:
  • WebCoreSupport/WebContextMenuClient.mm:
  • WebCoreSupport/WebViewFactory.mm: (-[WebViewFactory contextMenuItemTagInspectElement]):
  • WebView/WebUIDelegatePrivate.h:

Remove old Inspector code.

  • WebCoreSupport/WebFrameLoaderClient.mm: (WebFrameLoaderClient::dispatchDidLoadResourceFromMemoryCache): (WebFrameLoaderClient::assignIdentifierToInitialRequest): (WebFrameLoaderClient::dispatchDidFinishLoading):
  • WebInspector/WebInspector.m: Removed.
  • WebInspector/WebInspectorPanel.h: Removed.
  • WebInspector/WebInspectorPanel.m: Removed.
  • WebInspector/webInspector/Images/button.png: Removed.
  • WebInspector/webInspector/Images/buttonDivider.png: Removed.
  • WebInspector/webInspector/Images/buttonPressed.png: Removed.
  • WebInspector/webInspector/Images/close.png: Removed.
  • WebInspector/webInspector/Images/closePressed.png: Removed.
  • WebInspector/webInspector/Images/downTriangle.png: Removed.
  • WebInspector/webInspector/Images/menu.png: Removed.
  • WebInspector/webInspector/Images/menuPressed.png: Removed.
  • WebInspector/webInspector/Images/popup.png: Removed.
  • WebInspector/webInspector/Images/popupPressed.png: Removed.
  • WebInspector/webInspector/Images/resize.png: Removed.
  • WebInspector/webInspector/Images/rightTriangle.png: Removed.
  • WebInspector/webInspector/Images/scrollThumbBottom.png: Removed.
  • WebInspector/webInspector/Images/scrollThumbMiddle.png: Removed.
  • WebInspector/webInspector/Images/scrollTrackBottom.png: Removed.
  • WebInspector/webInspector/Images/upTriangle.png: Removed.
  • WebInspector/webInspector/inspector.css: Removed.
  • WebInspector/webInspector/inspector.html: Removed.
  • WebInspector/webInspector/inspector.js: Removed.
  • WebInspector/webInspector/scrollarea.js: Removed.
  • WebInspector/webInspector/scrollbar.js: Removed.
  • WebInspector/webInspector/utilities.js: Removed.
  • WebView/WebFrame.mm: (-[WebFramePrivate dealloc]):
  • WebView/WebFrameInternal.h:
  • WebView/WebHTMLView.mm: (-[WebHTMLView menuForEvent:]):

Build-fu:

  • WebKit.exp:
  • WebKit.xcodeproj/project.pbxproj:

WebKit/win:

Land the new Inspector.

Co-written with Tim Hatcher.

Reviewed by Anders, Adele, Hyatt, and Sam.

Implement the InspectorClient interface.

  • WebInspectorClient.cpp: Added. (WebInspectorClient::WebInspectorClient): (WebInspectorClient::~WebInspectorClient): (WebInspectorClient::inspectorDestroyed): (WebInspectorClient::createPage): (WebInspectorClient::showWindow): (WebInspectorClient::closeWindow): (WebInspectorClient::windowVisible): (WebInspectorClient::attachWindow): (WebInspectorClient::detachWindow): (WebInspectorClient::highlight): (WebInspectorClient::hideHighlight): (WebInspectorClient::inspectedURLChanged): (WebInspectorClient::updateWindowTitle): (WebInspectorClient::onSize): (WebInspectorClient::onClose): (WebInspectorClient::onWebViewWindowPosChanging): (WebInspectorWndProc): (SubclassedWebViewWndProc): (registerWindowClass):
  • WebInspectorClient.h: Added.

Add an easier-to-see highlight.

  • WebNodeHighlight.cpp: Added. (WebNodeHighlight::WebNodeHighlight): (WebNodeHighlight::~WebNodeHighlight): (WebNodeHighlight::highlight): (WebNodeHighlight::hide): (WebNodeHighlight::visible): (WebNodeHighlight::updateWindow): (WebNodeHighlight::removeSubclass): (registerOverlayClass): (OverlayWndProc): (SubclassedWndProc):
  • WebNodeHighlight.h: Added.

WebView changes needed for the new Inspector.

  • WebView.cpp: Removed old inspectElement method now that this is handled by WebCore. (WebView::WebView): (WebView::close): (WebView::performContextMenuAction): Removed handling of the Inspect Element context menu item. (WebView::initWithFrame): Give each Page an InspectorClient to enable the Inspector. (WebView::setProhibitsMainFrameScrolling): Added.
  • WebView.h:

Updates needed for WebCore changes.

  • Interfaces/IWebUIDelegate.idl:
  • WebContextMenuClient.cpp: (WebContextMenuClient::getCustomMenuFromDefaultItems):
  • WebContextMenuClient.h:
  • WebCoreLocalizedStrings.cpp:

Remove old Inspector code.

  • WebFrame.cpp:
  • WebFrame.h:
  • WebInspector/WebInspector.cpp: Removed.
  • WebInspector/WebInspector.h: Removed.
  • WebInspector/webInspector/Images/button.png: Removed.
  • WebInspector/webInspector/Images/buttonDivider.png: Removed.
  • WebInspector/webInspector/Images/buttonPressed.png: Removed.
  • WebInspector/webInspector/Images/close.png: Removed.
  • WebInspector/webInspector/Images/closePressed.png: Removed.
  • WebInspector/webInspector/Images/downTriangle.png: Removed.
  • WebInspector/webInspector/Images/menu.png: Removed.
  • WebInspector/webInspector/Images/menuPressed.png: Removed.
  • WebInspector/webInspector/Images/popup.png: Removed.
  • WebInspector/webInspector/Images/popupPressed.png: Removed.
  • WebInspector/webInspector/Images/resize.png: Removed.
  • WebInspector/webInspector/Images/rightTriangle.png: Removed.
  • WebInspector/webInspector/Images/scrollThumbBottom.png: Removed.
  • WebInspector/webInspector/Images/scrollThumbMiddle.png: Removed.
  • WebInspector/webInspector/Images/scrollTrackMiddle.png: Removed.
  • WebInspector/webInspector/Images/upTriangle.png: Removed.
  • WebInspector/webInspector/inspector.css: Removed.
  • WebInspector/webInspector/inspector.html: Removed.
  • WebInspector/webInspector/inspector.js: Removed.
  • WebInspector/webInspector/scrollarea.js: Removed.
  • WebInspector/webInspector/scrollbar.js: Removed.
  • WebInspector/webInspector/treeoutline.js: Removed.
  • WebInspector/webInspector/utilities.js: Removed.

Build-fu:

  • WebKit.vcproj/WebKit.vcproj:
Location:
trunk
Files:
98 added
51 deleted
58 edited
4 copied
8 moved

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/ChangeLog

    r23676 r23677  
     12007-06-20  Adam Roben  <aroben@apple.com>
     2
     3        Land the new Inspector.
     4
     5        Co-written with Tim Hatcher.
     6
     7        Reviewed by Anders, Adele, Hyatt, and Sam.
     8
     9        No regression tests possible.
     10
     11        Add a new InspectorController that is in charge of the Inspector. It
     12        has an InspectorClient that controls the Inspector's window and node
     13        highlight.
     14
     15        * page/InspectorClient.h: Added.
     16        (WebCore::InspectorClient::~InspectorClient):
     17        * page/InspectorController.cpp: Added.
     18        (WebCore::ConsoleMessage::ConsoleMessage):
     19        (WebCore::InspectorResource::): Represents a single resource that the
     20        Inspector knows about.
     21        (WebCore::InspectorResource::InspectorResource):
     22        (WebCore::InspectorResource::~InspectorResource):
     23        (WebCore::InspectorResource::type):
     24        (WebCore::InspectorResource::setScriptObject):
     25        (WebCore::addSourceToFrame): Callback available from JS.
     26        (WebCore::getResourceDocumentNode): Ditto.
     27        (WebCore::highlightDOMNode): Ditto.
     28        (WebCore::hideDOMNodeHighlight): Ditto.
     29        (WebCore::loaded): Ditto.
     30        (WebCore::unloading): Ditto.
     31        (WebCore::attach): Ditto.
     32        (WebCore::detach): Ditto.
     33        (WebCore::log): Ditto.
     34        (WebCore::search): Ditto.
     35        (WebCore::inspectedWindow): Ditto.
     36        (WebCore::InspectorController::InspectorController):
     37        (WebCore::InspectorController::~InspectorController):
     38        (WebCore::InspectorController::inspect): Called by
     39        ContextMenuController to inspect a node.
     40        (WebCore::InspectorController::focusNode):
     41        (WebCore::InspectorController::highlight):
     42        (WebCore::InspectorController::hideHighlight):
     43        (WebCore::InspectorController::windowVisible):
     44        (WebCore::InspectorController::setWindowVisible):
     45        (WebCore::InspectorController::addMessageToConsole):
     46        (WebCore::InspectorController::attachWindow):
     47        (WebCore::InspectorController::detachWindow):
     48        (WebCore::InspectorController::windowScriptObjectAvailable):
     49        (WebCore::InspectorController::scriptObjectReady):
     50        (WebCore::InspectorController::windowUnloading):
     51        (WebCore::addHeaders): Static helper function.
     52        (WebCore::objectForRequest): Ditto.
     53        (WebCore::objectForResponse): Ditto.
     54        (WebCore::InspectorController::addScriptResource):
     55        (WebCore::InspectorController::addAndUpdateScriptResource):
     56        (WebCore::InspectorController::removeScriptResource):
     57        (WebCore::InspectorController::updateScriptResource):
     58        (WebCore::InspectorController::populateScriptResources):
     59        (WebCore::InspectorController::addScriptConsoleMessage):
     60        (WebCore::callClearFunction): Static helper function.
     61        (WebCore::InspectorController::clearScriptResources):
     62        (WebCore::InspectorController::clearScriptConsoleMessages):
     63        (WebCore::InspectorController::clearNetworkTimeline):
     64        (WebCore::InspectorController::pruneResources):
     65        (WebCore::InspectorController::didCommitLoad): Callback from
     66        FrameLoader.
     67        (WebCore::InspectorController::frameDetachedFromParent): Ditto.
     68        (WebCore::InspectorController::addResource): Ditto.
     69        (WebCore::InspectorController::removeResource): Ditto.
     70        (WebCore::InspectorController::didLoadResourceFromMemoryCache): Ditto.
     71        (WebCore::InspectorController::identifierForInitialRequest): Ditto.
     72        (WebCore::InspectorController::willSendRequest): Ditto.
     73        (WebCore::InspectorController::didReceiveResponse): Ditto.
     74        (WebCore::InspectorController::didReceiveContentLength): Ditto.
     75        (WebCore::InspectorController::didFinishLoading): Ditto.
     76        (WebCore::InspectorController::didFailLoading): Ditto.
     77        * page/InspectorController.h: Added.
     78        (WebCore::InspectorController::inspectedPage):
     79        (WebCore::InspectorController::scriptContext):
     80        (WebCore::InspectorController::setScriptContext):
     81        (WebCore::InspectorController::resources):
     82        (WebCore::InspectorController::removeAllResources):
     83
     84        Add the JavaScript that defines most of the behavior of the Inspector.
     85       
     86        * page/inspector/ConsolePanel.js: Added.
     87        * page/inspector/NetworkPanel.js: Added.
     88        * page/inspector/Resource.js: Added.
     89        * page/inspector/ResourceCategory.js: Added.
     90        * page/inspector/ResourcePanel.js: Added.
     91        * page/inspector/inspector.js: Added.
     92        * page/inspector/treeoutline.js: Renamed from WebKit/WebInspector/webInspector/treeoutline.js.
     93        * page/inspector/utilities.js: Added.
     94
     95        Add the Inspector's CSS and HTML.
     96
     97        * page/inspector/inspector.css: Added.
     98        * page/inspector/inspector.html: Added.
     99
     100        Hang the InspectorController off of Page. We only create an
     101        InspectorController if an InspectorClient is given to the Page.
     102
     103        * page/Page.cpp:
     104        (WebCore::Page::Page):
     105        * page/Page.h:
     106        (WebCore::Page::inspectorController):
     107
     108        Use FrameLoader to notify the InspectorController of resource loads.
     109
     110        * loader/FrameLoader.cpp:
     111        (WebCore::FrameLoader::begin):
     112        (WebCore::FrameLoader::transitionToCommitted):
     113        (WebCore::FrameLoader::continueLoadAfterWillSubmitForm):
     114        (WebCore::FrameLoader::detachFromParent):
     115        (WebCore::FrameLoader::assignIdentifierToInitialRequest):
     116        (WebCore::FrameLoader::willSendRequest):
     117        (WebCore::FrameLoader::didReceiveResponse):
     118        (WebCore::FrameLoader::didReceiveData):
     119        (WebCore::FrameLoader::sendRemainingDelegateMessages):
     120        (WebCore::FrameLoader::requestFromDelegate):
     121        (WebCore::FrameLoader::didFinishLoad):
     122        (WebCore::FrameLoader::dispatchWindowObjectAvailable):
     123        (WebCore::FrameLoader::dispatchDidCommitLoad):
     124        (WebCore::FrameLoader::dispatchAssignIdentifierToInitialRequest):
     125        (WebCore::FrameLoader::dispatchWillSendRequest):
     126        (WebCore::FrameLoader::dispatchDidReceiveResponse):
     127        (WebCore::FrameLoader::dispatchDidReceiveContentLength):
     128        (WebCore::FrameLoader::dispatchDidFinishLoading):
     129        (WebCore::FrameLoader::dispatchDidLoadResourceFromMemoryCache):
     130        * loader/FrameLoader.h:
     131
     132        Send console messages to the InspectorController.
     133
     134        * page/Chrome.cpp:
     135        (WebCore::Chrome::addMessageToConsole): Send all console messages to
     136        the InspectorController.
     137        * page/Chrome.h: Add a new MessageLevel and MessageSource that are
     138        used in the Inspector JS.
     139
     140        Report HTML errors when the Inspector window is open.
     141        We don't report errors when the window is closed because we don't want
     142        to slow down the HTMLTokenizer.
     143
     144        * html/HTMLDocument.cpp:
     145        (WebCore::HTMLDocument::createTokenizer):
     146        * html/HTMLParser.cpp:
     147        (WebCore::HTMLParser::HTMLParser):
     148        * html/HTMLParser.h:
     149        * html/HTMLTokenizer.cpp:
     150        (WebCore::HTMLTokenizer::HTMLTokenizer):
     151        * html/HTMLTokenizer.h:
     152
     153        Append the "Inspect Element" context menu item after passing the
     154        context menu to the ContextMenuClient. This work used to be done in
     155        WebKit.
     156
     157        * page/ContextMenuClient.h:
     158        * page/ContextMenuController.cpp:
     159        (WebCore::ContextMenuController::handleContextMenuEvent): Add the
     160        "Inspect Element" item.
     161        (WebCore::ContextMenuController::contextMenuItemSelected): Handle the
     162        "Inspect Element" item.
     163        * platform/ContextMenu.cpp:
     164        (WebCore::ContextMenu::addInspectElementItem):
     165        (WebCore::ContextMenu::checkOrEnableIfNeeded): Updated for "Inspect
     166        Element" item.
     167        * platform/ContextMenu.h:
     168        * platform/ContextMenuItem.h:
     169        (WebCore::): Add ContextMenuItemTagInspectElement.
     170        * platform/graphics/svg/SVGImageEmptyClients.h:
     171        * page/mac/WebCoreViewFactory.h: Add the "Inspect Element" localized
     172        string.
     173        * platform/LocalizedStrings.h: Ditto.
     174        * platform/mac/LocalizedStringsMac.mm:
     175        (WebCore::contextMenuItemTagInspectElement): Ditto.
     176
     177        Miscellaneous changes:
     178
     179        * css/view-source.css: Add message bubble styles.
     180        * loader/DocumentLoader.h: Add a frame getter.
     181        * platform/win/ScrollViewWin.cpp:
     182        (WebCore::ScrollView::updateScrollbars): Respect
     183        Frame::prohibitsScrolling.
     184
     185        Add new images needed for the Inspector.
     186
     187        * page/inspector/Images/attachedShadow.png: Added.
     188        * page/inspector/Images/bottomShadow.png: Added.
     189        * page/inspector/Images/breadcrumbBackground.png: Added.
     190        * page/inspector/Images/checker.png: Added.
     191        * page/inspector/Images/console.png: Added.
     192        * page/inspector/Images/darkShadow.png: Added.
     193        * page/inspector/Images/disclosureDownPressed.png: Added.
     194        * page/inspector/Images/disclosureRightDown.png: Added.
     195        * page/inspector/Images/disclosureRightPressed.png: Added.
     196        * page/inspector/Images/document.png: Added.
     197        * page/inspector/Images/domViewButton.png: Added.
     198        * page/inspector/Images/domViewButtonSelected.png: Added.
     199        * page/inspector/Images/downTriangle.png: Added.
     200        * page/inspector/Images/errorIcon.png: Added.
     201        * page/inspector/Images/errorMediumIcon.png: Added.
     202        * page/inspector/Images/folder.png: Added.
     203        * page/inspector/Images/goArrow.png: Added.
     204        * page/inspector/Images/gradient.png: Added.
     205        * page/inspector/Images/gradientHighlight.png: Added.
     206        * page/inspector/Images/gradientHighlightBottom.png: Added.
     207        * page/inspector/Images/hideStatusWidget.png: Added.
     208        * page/inspector/Images/hideStatusWidgetPressed.png: Added.
     209        * page/inspector/Images/network.png: Added.
     210        * page/inspector/Images/paneBottomGrow.png: Added.
     211        * page/inspector/Images/paneBottomGrowActive.png: Added.
     212        * page/inspector/Images/paneGrowHandleLine.png: Added.
     213        * page/inspector/Images/paneHeader.png: Added.
     214        * page/inspector/Images/paneHeaderActive.png: Added.
     215        * page/inspector/Images/plainDocument.png: Added.
     216        * page/inspector/Images/popupArrows.png: Added.
     217        * page/inspector/Images/rightTriangle.png: Added.
     218        * page/inspector/Images/segment.png: Added.
     219        * page/inspector/Images/segmentEnd.png: Added.
     220        * page/inspector/Images/segmentHover.png: Added.
     221        * page/inspector/Images/segmentHoverEnd.png: Added.
     222        * page/inspector/Images/segmentSelected.png: Added.
     223        * page/inspector/Images/segmentSelectedEnd.png: Added.
     224        * page/inspector/Images/showStatusWidget.png: Added.
     225        * page/inspector/Images/showStatusWidgetPressed.png: Added.
     226        * page/inspector/Images/sidbarItemBackground.png: Added.
     227        * page/inspector/Images/sidebarActionWidget.png: Added.
     228        * page/inspector/Images/sidebarActionWidgetPressed.png: Added.
     229        * page/inspector/Images/sidebarAttachWidget.png: Added.
     230        * page/inspector/Images/sidebarAttachWidgetPressed.png: Added.
     231        * page/inspector/Images/sidebarDetachWidget.png: Added.
     232        * page/inspector/Images/sidebarDetachWidgetPressed.png: Added.
     233        * page/inspector/Images/sidebarResizeWidget.png: Added.
     234        * page/inspector/Images/sidebarSelection.png: Added.
     235        * page/inspector/Images/sidebarSelectionBlurred.png: Added.
     236        * page/inspector/Images/sidebarSelectionBlurredTall.png: Added.
     237        * page/inspector/Images/sidebarSelectionGray.png: Added.
     238        * page/inspector/Images/sidebarSelectionGrayTall.png: Added.
     239        * page/inspector/Images/sidebarSelectionTall.png: Added.
     240        * page/inspector/Images/sidebarStatusAreaBackground.png: Added.
     241        * page/inspector/Images/sourceViewButton.png: Added.
     242        * page/inspector/Images/sourceViewButtonSelected.png: Added.
     243        * page/inspector/Images/splitviewDimple.png: Added.
     244        * page/inspector/Images/splitviewDividerBackground.png: Added.
     245        * page/inspector/Images/tab.png: Added.
     246        * page/inspector/Images/tabSelected.png: Added.
     247        * page/inspector/Images/timelinePillBlue.png: Added.
     248        * page/inspector/Images/timelinePillGray.png: Added.
     249        * page/inspector/Images/timelinePillGreen.png: Added.
     250        * page/inspector/Images/timelinePillOrange.png: Added.
     251        * page/inspector/Images/timelinePillPurple.png: Added.
     252        * page/inspector/Images/timelinePillRed.png: Added.
     253        * page/inspector/Images/timelinePillYellow.png: Added.
     254        * page/inspector/Images/tipBalloon.png: Added.
     255        * page/inspector/Images/tipBalloonBottom.png: Added.
     256        * page/inspector/Images/tipIcon.png: Added.
     257        * page/inspector/Images/tipIconPressed.png: Added.
     258        * page/inspector/Images/toggleDown.png: Added.
     259        * page/inspector/Images/toggleUp.png: Added.
     260        * page/inspector/Images/toolbarBackground.png: Added.
     261        * page/inspector/Images/toolbarBackgroundInactive.png: Added.
     262        * page/inspector/Images/toolbarButton.png: Added.
     263        * page/inspector/Images/toolbarButtonInactive.png: Added.
     264        * page/inspector/Images/toolbarButtonPressed.png: Added.
     265        * page/inspector/Images/toolbarButtonPressedInactive.png: Added.
     266        * page/inspector/Images/toolbarSplitButtonDivider.png: Added.
     267        * page/inspector/Images/toolbarSplitButtonDividerInactive.png: Added.
     268        * page/inspector/Images/treeDownTriangleBlack.png: Added.
     269        * page/inspector/Images/treeDownTriangleWhite.png: Added.
     270        * page/inspector/Images/treeLeftTriangleBlack.png: Added.
     271        * page/inspector/Images/treeRightTriangleBlack.png: Added.
     272        * page/inspector/Images/treeRightTriangleWhite.png: Added.
     273        * page/inspector/Images/warningIcon.png: Added.
     274        * page/inspector/Images/warningMediumIcon.png: Added.
     275        * page/inspector/Images/warningsErrors.png: Added.
     276
     277        Build-fu:
     278
     279        * WebCore.exp: Added new symbols.
     280        * WebCore.xcodeproj/project.pbxproj: Added new source files and
     281        resources.
     282        * WebCore.vcproj/WebCore.vcproj: Ditto, and copy the resources to
     283        $WebKitOutputDir.
     284
     285        Windows build fixes:
     286
     287        * history/HistoryItem.h: ResourceRequest is a struct.
     288        * loader/FrameLoaderClient.h: Ditto.
     289
    12902007-06-20  Mitz Pettel  <mitz@webkit.org>
    2291
  • trunk/WebCore/WebCore.exp

    r23536 r23677  
    134134__ZN7WebCore10EventNames12keydownEventE
    135135__ZN7WebCore10MouseEventC1ERKNS_12AtomicStringEbbPNS_9DOMWindowEiiiiibbbbtPNS_15EventTargetNodeEPNS_9ClipboardEb
     136__ZN7WebCore10StringImpl11computeHashEPKtj
    136137__ZN7WebCore10StringImpl7replaceEtt
    137138__ZN7WebCore10StringImplD1Ev
     
    229230__ZN7WebCore12SharedBuffer10wrapNSDataEP6NSData
    230231__ZN7WebCore12SharedBuffer12createNSDataEv
     232__ZN7WebCore12TextEncodingC1ERKNS_6StringE
    231233__ZN7WebCore12iconDatabaseEv
    232234__ZN7WebCore13HitTestResultC1ERKS0_
     
    301303__ZN7WebCore16NavigationActionC1Ev
    302304__ZN7WebCore18PlatformMouseEventC1EP7NSEvent
     305__ZN7WebCore19InspectorController16setWindowVisibleEb
    303306__ZN7WebCore19SelectionController16setSelectedRangeEPNS_5RangeENS_9EAffinityEbRi
    304307__ZN7WebCore19SelectionController5clearEv
     
    318321__ZN7WebCore21ContextMenuController16clearContextMenuEv
    319322__ZN7WebCore21PlatformKeyboardEventC1EP7NSEventb
     323__ZN7WebCore21WindowsLatin1EncodingEv
    320324__ZN7WebCore21findEventWithKeyStateEPNS_5EventE
    321325__ZN7WebCore21isBackForwardLoadTypeENS_13FrameLoadTypeE
     
    337341__ZN7WebCore4Page15backForwardListEv
    338342__ZN7WebCore4Page16setDefersLoadingEb
     343__ZN7WebCore4Page18setInspectorClientEPNS_15InspectorClientE
    339344__ZN7WebCore4Page23clearUndoRedoOperationsEv
    340345__ZN7WebCore4Page6goBackEv
     
    487492__ZN7WebCore9TimerBaseD2Ev
    488493__ZN7WebCore9pageCacheEv
     494__ZN7WebCoreeqERKNS_15ResourceRequestES2_
    489495__ZN7WebCoreeqERKNS_4KURLES2_
    490496__ZNK7WebCore10StringImplcvP8NSStringEv
     
    525531__ZNK7WebCore12EventHandler20currentKeyboardEventEv
    526532__ZNK7WebCore12RenderObject25backslashAsCurrencySymbolEv
     533__ZNK7WebCore12SharedBuffer4dataEv
     534__ZNK7WebCore12SharedBuffer4sizeEv
     535__ZNK7WebCore12TextEncoding6decodeEPKcm
    527536__ZNK7WebCore13HitTestResult10isLiveLinkEv
    528537__ZNK7WebCore13HitTestResult10isSelectedEv
     
    540549__ZNK7WebCore13ResourceErrorcvP7NSErrorEv
    541550__ZNK7WebCore14DocumentLoader10isStoppingEv
     551__ZNK7WebCore14DocumentLoader10requestURLEv
    542552__ZNK7WebCore14DocumentLoader11frameLoaderEv
    543553__ZNK7WebCore14DocumentLoader11isCommittedEv
     
    559569__ZNK7WebCore15ProgressTracker17estimatedProgressEv
    560570__ZNK7WebCore15ResourceRequest12nsURLRequestEv
     571__ZNK7WebCore15ResourceRequest16httpHeaderFieldsEv
    561572__ZNK7WebCore15ResourceRequest3urlEv
    562573__ZNK7WebCore15ResourceRequest7isEmptyEv
     
    566577__ZNK7WebCore16DeprecatedString8endsWithERKS0_
    567578__ZNK7WebCore16ResourceResponse13nsURLResponseEv
     579__ZNK7WebCore16ResourceResponse14httpStatusCodeEv
     580__ZNK7WebCore16ResourceResponse16httpHeaderFieldsEv
     581__ZNK7WebCore16ResourceResponse16textEncodingNameEv
     582__ZNK7WebCore16ResourceResponse17suggestedFilenameEv
     583__ZNK7WebCore16ResourceResponse21expectedContentLengthEv
    568584__ZNK7WebCore16ResourceResponse3urlEv
     585__ZNK7WebCore16ResourceResponse8mimeTypeEv
    569586__ZNK7WebCore19SelectionController17isInPasswordFieldEv
    570587__ZNK7WebCore26NetscapePlugInStreamLoader6isDoneEv
    571588__ZNK7WebCore4Font11primaryFontEv
     589__ZNK7WebCore4KURL17lastPathComponentEv
    572590__ZNK7WebCore4KURL4hostEv
     591__ZNK7WebCore4KURL4pathEv
    573592__ZNK7WebCore4KURL8getNSURLEv
    574593__ZNK7WebCore5Frame10isFrameSetEv
     
    606625__ZNK7WebCore6Editor8canPasteEv
    607626__ZNK7WebCore6Editor9canDeleteEv
     627__ZNK7WebCore6String10charactersEv
    608628__ZNK7WebCore6String16deprecatedStringEv
    609629__ZNK7WebCore6String6lengthEv
  • trunk/WebCore/WebCore.vcproj/WebCore.vcproj

    r23584 r23677  
    8686                        <Tool
    8787                                Name="VCPostBuildEventTool"
    88                                 CommandLine="mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\bindings&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\kjs&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\pcre&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode\icu&quot;&#x0D;&#x0A;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\config.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitOutputDir)\obj\WebCore\DerivedSources\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\loader\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\loader\icon\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\history\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\html\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\css\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\cf\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\graphics\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y &quot;$(ProjectDir)..\platform\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\network\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\network\cf\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\network\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y &quot;$(ProjectDir)..\platform\network\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\cairo\cairo\src\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\bindings\js\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\bridge\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\bridge\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y &quot;$(ProjectDir)..\bridge\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\page\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\plugins\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\rendering\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\editing\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\dom\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\xml\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\ksvg2\css\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\ksvg2\events\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\ksvg2\misc\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\ksvg2\scripts\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\ksvg2\svg\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\bindings\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\bindings&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\kjs\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\kjs&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\pcre\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\pcre&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\wtf\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\wtf\unicode\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\wtf\unicode\icu\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode\icu&quot;&#x0D;&#x0A;"
     88                                CommandLine="mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\bindings&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\kjs&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\pcre&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode\icu&quot;&#x0D;&#x0A;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\config.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitOutputDir)\obj\WebCore\DerivedSources\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\loader\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\loader\icon\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\history\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\html\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\css\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\cf\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\graphics\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y &quot;$(ProjectDir)..\platform\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\network\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\network\cf\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\network\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y &quot;$(ProjectDir)..\platform\network\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\cairo\cairo\src\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\bindings\js\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\bridge\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\bridge\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y &quot;$(ProjectDir)..\bridge\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\page\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\plugins\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\rendering\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\editing\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\dom\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\xml\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\ksvg2\css\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\ksvg2\events\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\ksvg2\misc\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\ksvg2\scripts\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\ksvg2\svg\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\bindings\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\bindings&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\kjs\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\kjs&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\pcre\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\pcre&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\wtf\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\wtf\unicode\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\wtf\unicode\icu\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode\icu&quot;&#x0D;&#x0A;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\bin\WebKit.resources\inspector&quot;&#x0D;&#x0A;xcopy /y /d /s &quot;$(ProjectDir)\..\page\inspector\*&quot; &quot;$(WebKitOutputDir)\bin\WebKit.resources\inspector&quot;&#x0D;&#x0A;"
    8989                        />
    9090                </Configuration>
     
    157157                        <Tool
    158158                                Name="VCPostBuildEventTool"
    159                                 CommandLine="mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\bindings&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\kjs&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\pcre&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode\icu&quot;&#x0D;&#x0A;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\config.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitOutputDir)\obj\WebCore\DerivedSources\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\loader\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\loader\icon\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\history\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\html\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\css\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\cf\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\graphics\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y &quot;$(ProjectDir)..\platform\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\network\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\network\cf\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\network\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y &quot;$(ProjectDir)..\platform\network\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\cairo\cairo\src\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\bindings\js\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\bridge\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\bridge\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y &quot;$(ProjectDir)..\bridge\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\page\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\plugins\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\rendering\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\editing\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\dom\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\xml\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\ksvg2\css\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\ksvg2\events\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\ksvg2\misc\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\ksvg2\scripts\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\ksvg2\svg\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\bindings\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\bindings&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\kjs\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\kjs&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\pcre\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\pcre&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\wtf\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\wtf\unicode\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\wtf\unicode\icu\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode\icu&quot;&#x0D;&#x0A;"
     159                                CommandLine="mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\bindings&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\kjs&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\pcre&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode\icu&quot;&#x0D;&#x0A;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\config.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitOutputDir)\obj\WebCore\DerivedSources\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\loader\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\loader\icon\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\history\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\html\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\css\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\cf\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\graphics\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y &quot;$(ProjectDir)..\platform\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\network\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\network\cf\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\network\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y &quot;$(ProjectDir)..\platform\network\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\cairo\cairo\src\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\bindings\js\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\bridge\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\bridge\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y &quot;$(ProjectDir)..\bridge\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\page\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\plugins\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\rendering\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\editing\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\dom\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\xml\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\ksvg2\css\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\ksvg2\events\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\ksvg2\misc\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\ksvg2\scripts\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\ksvg2\svg\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\bindings\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\bindings&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\kjs\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\kjs&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\pcre\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\pcre&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\wtf\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\wtf\unicode\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\wtf\unicode\icu\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode\icu&quot;&#x0D;&#x0A;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\bin\WebKit.resources\inspector&quot;&#x0D;&#x0A;xcopy /y /d /s &quot;$(ProjectDir)\..\page\inspector\*&quot; &quot;$(WebKitOutputDir)\bin\WebKit.resources\inspector&quot;&#x0D;&#x0A;"
    160160                        />
    161161                </Configuration>
     
    230230                        <Tool
    231231                                Name="VCPostBuildEventTool"
    232                                 CommandLine="mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\bindings&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\kjs&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\pcre&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode\icu&quot;&#x0D;&#x0A;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\config.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitOutputDir)\obj\WebCore\DerivedSources\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\loader\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\loader\icon\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\history\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\html\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\css\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\cf\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\graphics\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y &quot;$(ProjectDir)..\platform\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\network\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\network\cf\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\network\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y &quot;$(ProjectDir)..\platform\network\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\cairo\cairo\src\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\bindings\js\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\bridge\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\bridge\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y &quot;$(ProjectDir)..\bridge\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\page\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\plugins\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\rendering\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\editing\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\dom\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\xml\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\ksvg2\css\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\ksvg2\events\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\ksvg2\misc\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\ksvg2\scripts\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\ksvg2\svg\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\bindings\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\bindings&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\kjs\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\kjs&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\pcre\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\pcre&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\wtf\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\wtf\unicode\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\wtf\unicode\icu\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode\icu&quot;&#x0D;&#x0A;"
     232                                CommandLine="mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\bindings&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\kjs&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\pcre&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode\icu&quot;&#x0D;&#x0A;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\config.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitOutputDir)\obj\WebCore\DerivedSources\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\loader\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\loader\icon\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\history\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\html\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\css\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\cf\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\graphics\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y &quot;$(ProjectDir)..\platform\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\network\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\network\cf\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\network\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y &quot;$(ProjectDir)..\platform\network\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\platform\cairo\cairo\src\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\bindings\js\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\bridge\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\bridge\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y &quot;$(ProjectDir)..\bridge\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\page\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\plugins\win\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\rendering\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\editing\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\dom\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\xml\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\ksvg2\css\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\ksvg2\events\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\ksvg2\misc\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\ksvg2\scripts\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\ksvg2\svg\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\bindings\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\bindings&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\kjs\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\kjs&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\pcre\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\pcre&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\wtf\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\wtf\unicode\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\wtf\unicode\icu\*.h&quot; &quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders\wtf\unicode\icu&quot;&#x0D;&#x0A;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\bin\WebKit.resources\inspector&quot;&#x0D;&#x0A;xcopy /y /d /s &quot;$(ProjectDir)\..\page\inspector\*&quot; &quot;$(WebKitOutputDir)\bin\WebKit.resources\inspector&quot;&#x0D;&#x0A;"
    233233                        />
    234234                </Configuration>
     
    24872487                        </File>
    24882488                        <File
     2489                                RelativePath="..\page\InspectorClient.h"
     2490                                >
     2491                        </File>
     2492                        <File
     2493                                RelativePath="..\page\InspectorController.cpp"
     2494                                >
     2495                        </File>
     2496                        <File
     2497                                RelativePath="..\page\InspectorController.h"
     2498                                >
     2499                        </File>
     2500                        <File
    24892501                                RelativePath="..\page\MouseEventWithHitTestResults.cpp"
    24902502                                >
  • trunk/WebCore/WebCore.xcodeproj/project.pbxproj

    r23584 r23677  
    3030                0668E18B0ADD9624004128E0 /* PopupMenu.h in Headers */ = {isa = PBXBuildFile; fileRef = 0668E1890ADD9624004128E0 /* PopupMenu.h */; };
    3131                0668E1900ADD9640004128E0 /* PopupMenuMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0668E18E0ADD9640004128E0 /* PopupMenuMac.mm */; };
     32                06693DBA0BFBA2F400216072 /* InspectorClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 06693DB70BFBA2F400216072 /* InspectorClient.h */; settings = {ATTRIBUTES = (Private, ); }; };
     33                06693DBB0BFBA2F400216072 /* InspectorController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 06693DB80BFBA2F400216072 /* InspectorController.cpp */; };
     34                06693DBC0BFBA2F400216072 /* InspectorController.h in Headers */ = {isa = PBXBuildFile; fileRef = 06693DB90BFBA2F400216072 /* InspectorController.h */; settings = {ATTRIBUTES = (Private, ); }; };
     35                06693F7B0BFBC91700216072 /* inspector in Resources */ = {isa = PBXBuildFile; fileRef = 06693F450BFBC91600216072 /* inspector */; };
    3236                066C772B0AB603B700238CC4 /* FileChooser.h in Headers */ = {isa = PBXBuildFile; fileRef = 066C772A0AB603B700238CC4 /* FileChooser.h */; };
    3337                066C772D0AB603D200238CC4 /* FileChooserMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 066C772C0AB603D200238CC4 /* FileChooserMac.mm */; };
     
    6670                14D824080AF93AEB0004F057 /* ChromeClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 14D824060AF93AEB0004F057 /* ChromeClient.h */; settings = {ATTRIBUTES = (Private, ); }; };
    6771                14DC0D3709FED073007B0235 /* JSNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 14DC0D3509FED073007B0235 /* JSNode.cpp */; };
    68                 14DC0D3809FED073007B0235 /* JSNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 14DC0D3609FED073007B0235 /* JSNode.h */; };
     72                14DC0D3809FED073007B0235 /* JSNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 14DC0D3609FED073007B0235 /* JSNode.h */; settings = {ATTRIBUTES = (Private, ); }; };
    6973                14E8378409F85D1C00B85AE4 /* JSEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 14E8378309F85D1C00B85AE4 /* JSEvent.cpp */; };
    7074                14E8378E09F85D4F00B85AE4 /* JSEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 14E8378D09F85D4F00B85AE4 /* JSEvent.h */; };
     
    15231527                93B70D6609EB0C7C009D8468 /* kjs_css.h in Headers */ = {isa = PBXBuildFile; fileRef = 93B70D4A09EB0C7C009D8468 /* kjs_css.h */; };
    15241528                93B70D6709EB0C7C009D8468 /* kjs_dom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93B70D4B09EB0C7C009D8468 /* kjs_dom.cpp */; };
    1525                 93B70D6809EB0C7C009D8468 /* kjs_dom.h in Headers */ = {isa = PBXBuildFile; fileRef = 93B70D4C09EB0C7C009D8468 /* kjs_dom.h */; };
     1529                93B70D6809EB0C7C009D8468 /* kjs_dom.h in Headers */ = {isa = PBXBuildFile; fileRef = 93B70D4C09EB0C7C009D8468 /* kjs_dom.h */; settings = {ATTRIBUTES = (Private, ); }; };
    15261530                93B70D6909EB0C7C009D8468 /* kjs_events.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93B70D4D09EB0C7C009D8468 /* kjs_events.cpp */; };
    15271531                93B70D6A09EB0C7C009D8468 /* kjs_events.h in Headers */ = {isa = PBXBuildFile; fileRef = 93B70D4E09EB0C7C009D8468 /* kjs_events.h */; };
     
    17941798                A8185F3F09765766005826D9 /* DocumentFragment.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8185F3709765765005826D9 /* DocumentFragment.cpp */; };
    17951799                A8185F4009765766005826D9 /* Document.h in Headers */ = {isa = PBXBuildFile; fileRef = A8185F3809765765005826D9 /* Document.h */; settings = {ATTRIBUTES = (Private, ); }; };
    1796                 A818721B0977D3C0005826D9 /* NodeList.h in Headers */ = {isa = PBXBuildFile; fileRef = A81872100977D3C0005826D9 /* NodeList.h */; };
     1800                A818721B0977D3C0005826D9 /* NodeList.h in Headers */ = {isa = PBXBuildFile; fileRef = A81872100977D3C0005826D9 /* NodeList.h */; settings = {ATTRIBUTES = (Private, ); }; };
    17971801                A818721C0977D3C0005826D9 /* ContainerNode.h in Headers */ = {isa = PBXBuildFile; fileRef = A81872110977D3C0005826D9 /* ContainerNode.h */; settings = {ATTRIBUTES = (Private, ); }; };
    17981802                A818721E0977D3C0005826D9 /* NameNodeList.h in Headers */ = {isa = PBXBuildFile; fileRef = A81872130977D3C0005826D9 /* NameNodeList.h */; };
     
    28462850                BCB16C280979C3BD00467741 /* CachedXSLStyleSheet.h in Headers */ = {isa = PBXBuildFile; fileRef = BCB16C0F0979C3BD00467741 /* CachedXSLStyleSheet.h */; };
    28472851                BCB16C290979C3BD00467741 /* DocLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCB16C100979C3BD00467741 /* DocLoader.cpp */; };
    2848                 BCB16C2A0979C3BD00467741 /* DocLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = BCB16C110979C3BD00467741 /* DocLoader.h */; };
     2852                BCB16C2A0979C3BD00467741 /* DocLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = BCB16C110979C3BD00467741 /* DocLoader.h */; settings = {ATTRIBUTES = (Private, ); }; };
    28492853                BCB16C2C0979C3BD00467741 /* loader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCB16C130979C3BD00467741 /* loader.cpp */; };
    28502854                BCB16C2D0979C3BD00467741 /* loader.h in Headers */ = {isa = PBXBuildFile; fileRef = BCB16C140979C3BD00467741 /* loader.h */; settings = {ATTRIBUTES = (Private, ); }; };
     
    32163220                0668E1890ADD9624004128E0 /* PopupMenu.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PopupMenu.h; sourceTree = "<group>"; };
    32173221                0668E18E0ADD9640004128E0 /* PopupMenuMac.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = PopupMenuMac.mm; sourceTree = "<group>"; };
     3222                06693DB70BFBA2F400216072 /* InspectorClient.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = InspectorClient.h; sourceTree = "<group>"; };
     3223                06693DB80BFBA2F400216072 /* InspectorController.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorController.cpp; sourceTree = "<group>"; };
     3224                06693DB90BFBA2F400216072 /* InspectorController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = InspectorController.h; sourceTree = "<group>"; };
     3225                06693F450BFBC91600216072 /* inspector */ = {isa = PBXFileReference; lastKnownFileType = folder; path = inspector; sourceTree = "<group>"; };
    32183226                066C772A0AB603B700238CC4 /* FileChooser.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = FileChooser.h; sourceTree = "<group>"; };
    32193227                066C772C0AB603D200238CC4 /* FileChooserMac.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = FileChooserMac.mm; sourceTree = "<group>"; };
     
    72337241                        isa = PBXGroup;
    72347242                        children = (
     7243                                06693F450BFBC91600216072 /* inspector */,
    72357244                                93C09A820B064F05005ABD4D /* mac */,
    72367245                                8538F0000AD71770006A81D1 /* AbstractView.idl */,
     
    72647273                                65CBFEF70974F607001DAC25 /* FrameView.cpp */,
    72657274                                65CBFEF80974F607001DAC25 /* FrameView.h */,
     7275                                06693DB70BFBA2F400216072 /* InspectorClient.h */,
     7276                                06693DB80BFBA2F400216072 /* InspectorController.cpp */,
     7277                                06693DB90BFBA2F400216072 /* InspectorController.h */,
    72667278                                BC94D1500C275C8B006BC617 /* History.cpp */,
    72677279                                BC94D1510C275C8B006BC617 /* History.h */,
     
    1156611578                                37919C1D0BF3762800956998 /* ShapeArabic.h in Headers */,
    1156711579                                BC588AF00BFA6CF900EE679E /* HTMLParserErrorCodes.h in Headers */,
     11580                                06693DBA0BFBA2F400216072 /* InspectorClient.h in Headers */,
     11581                                06693DBC0BFBA2F400216072 /* InspectorController.h in Headers */,
    1156811582                                BCA169A30BFD55B40019CA76 /* JSHTMLTableCaptionElement.h in Headers */,
    1156911583                                BC06ED070BFD5BAE00856E9D /* JSHTMLTableSectionElement.h in Headers */,
     
    1164811662                        isa = PBXProject;
    1164911663                        buildConfigurationList = 149C284308902B11008A9EFC /* Build configuration list for PBXProject "WebCore" */;
     11664                        compatibilityVersion = "Xcode 2.4";
    1165011665                        hasScannedForEncodings = 1;
    1165111666                        knownRegions = (
     
    1172111736                                464EA2730B8A350B00A8E6E3 /* crossHairCursor.png in Resources */,
    1172211737                                464EA2740B8A350B00A8E6E3 /* notAllowedCursor.png in Resources */,
     11738                                06693F7B0BFBC91700216072 /* inspector in Resources */,
    1172311739                                BC491B4F0C023E2D009D6316 /* HTMLMarqueeElement.idl in Resources */,
    1172411740                                1AB1AE7A0C051FDE00139F4F /* zoomInCursor.png in Resources */,
     
    1298913005                                37919C190BF375DD00956998 /* ShapeArabic.c in Sources */,
    1299013006                                BC588B4B0BFA723C00EE679E /* HTMLParserErrorCodes.cpp in Sources */,
     13007                                06693DBB0BFBA2F400216072 /* InspectorController.cpp in Sources */,
    1299113008                                BCA169A20BFD55B40019CA76 /* JSHTMLTableCaptionElement.cpp in Sources */,
    1299213009                                BC06ED060BFD5BAE00856E9D /* JSHTMLTableSectionElement.cpp in Sources */,
  • trunk/WebCore/css/view-source.css

    r21630 r23677  
    8888}
    8989
    90 /*
    9190.webkit-html-external-link {
     91    text-decoration: none;
    9292}
    9393
     94.webkit-html-external-link:hover {
     95    text-decoration: underline;
     96}
     97
     98/*
    9499.webkit-html-resource-link {
    95100}
     
    107112    rgb(136, 18, 128);
    108113}
     114
     115.webkit-html-message-bubble {
     116    -webkit-box-shadow: black 0px 2px 5px;
     117    -webkit-border-radius: 9px;
     118    -webkit-border-fit: lines;
     119    font-size: 9px;
     120    font-family: Lucida Grande;
     121    font-weight: bold;
     122    margin: 6px 25px;
     123    padding: 0 7px 1px;
     124}
     125
     126.webkit-html-warning-message {
     127    background-color: rgb(100%, 62%, 42%);
     128    border: 2px solid rgb(100%, 52%, 21%);
     129}
     130
     131.webkit-html-error-message {
     132    background-color: rgb(100%, 42%, 42%);
     133    border: 2px solid rgb(100%, 31%, 31%);
     134}
     135
     136.webkit-html-message-line {
     137    padding-left: 23px;
     138    text-indent: -20px;
     139}
     140
     141.webkit-html-message-icon {
     142    position: relative;
     143    top: 2px;
     144    margin: 0 4px;
     145}
  • trunk/WebCore/history/HistoryItem.h

    r21793 r23677  
    4848class Image;
    4949class KURL;
    50 class ResourceRequest;
     50struct ResourceRequest;
    5151
    5252class HistoryItem;
  • trunk/WebCore/html/HTMLDocument.cpp

    r21681 r23677  
    6868#include "HTMLNames.h"
    6969#include "HTMLTokenizer.h"
     70#include "InspectorController.h"
    7071#include "KURL.h"
     72#include "Page.h"
    7173#include "cssstyleselector.h"
    7274
     
    283285Tokenizer *HTMLDocument::createTokenizer()
    284286{
    285     return new HTMLTokenizer(this);
     287    bool reportErrors = false;
     288    if (Page* page = m_frame->page())
     289        if (InspectorController* controller = page->inspectorController())
     290            reportErrors = controller->windowVisible();
     291
     292    return new HTMLTokenizer(this, reportErrors);
    286293}
    287294
  • trunk/WebCore/html/HTMLParser.cpp

    r21864 r23677  
    110110 */
    111111
    112 HTMLParser::HTMLParser(HTMLDocument* doc)
     112HTMLParser::HTMLParser(HTMLDocument* doc, bool reportErrors)
    113113    : document(doc)
    114114    , current(doc)
     
    120120    , haveFrameSet(false)
    121121    , m_isParsingFragment(false)
    122     , m_reportErrors(false)
     122    , m_reportErrors(reportErrors)
    123123    , inStrayTableContent(0)
    124124{
  • trunk/WebCore/html/HTMLParser.h

    r21726 r23677  
    4949class HTMLParser : Noncopyable {
    5050public:
    51     HTMLParser(HTMLDocument*);
     51    HTMLParser(HTMLDocument*, bool reportErrors);
    5252    HTMLParser(DocumentFragment*);
    5353    virtual ~HTMLParser();
  • trunk/WebCore/html/HTMLTokenizer.cpp

    r21749 r23677  
    142142// ----------------------------------------------------------------------------
    143143
    144 HTMLTokenizer::HTMLTokenizer(HTMLDocument* doc)
     144HTMLTokenizer::HTMLTokenizer(HTMLDocument* doc, bool reportErrors)
    145145    : Tokenizer()
    146146    , buffer(0)
     
    153153    , m_timer(this, &HTMLTokenizer::timerFired)
    154154    , m_doc(doc)
    155     , parser(new HTMLParser(doc))
     155    , parser(new HTMLParser(doc, reportErrors))
    156156    , inWrite(false)
    157157    , m_fragment(false)
  • trunk/WebCore/html/HTMLTokenizer.h

    r21746 r23677  
    8888class HTMLTokenizer : public Tokenizer, public CachedResourceClient {
    8989public:
    90     HTMLTokenizer(HTMLDocument*);
     90    HTMLTokenizer(HTMLDocument*, bool reportErrors);
    9191    HTMLTokenizer(HTMLViewSourceDocument*);
    9292    HTMLTokenizer(DocumentFragment*);
  • trunk/WebCore/loader/DocumentLoader.h

    r23627 r23677  
    6262
    6363        void setFrame(Frame*);
     64        Frame* frame() const { return m_frame; }
     65
    6466        virtual void attachToFrame();
    6567        virtual void detachFromFrame();
  • trunk/WebCore/loader/FrameLoader.cpp

    r23577 r23677  
    6161#include "IconDatabase.h"
    6262#include "IconLoader.h"
     63#include "InspectorController.h"
    6364#include "Logging.h"
    6465#include "MainResourceLoader.h"
     
    841842{
    842843    clear();
    843     partClearedInBegin();
     844    dispatchWindowObjectAvailable();
    844845
    845846    m_needsClear = true;
     
    24702471    m_committedFirstRealDocumentLoad = true;
    24712472
    2472     m_client->dispatchDidCommitLoad();
     2473    dispatchDidCommitLoad();
    24732474   
    24742475    // If we have a title let the WebView know about it.
     
    28242825
    28252826    unsigned long identifier = m_frame->page()->progress()->createUniqueIdentifier();
    2826     m_client->assignIdentifierToInitialRequest(identifier, m_provisionalDocumentLoader.get(), m_provisionalDocumentLoader->originalRequest());
     2827    dispatchAssignIdentifierToInitialRequest(identifier, m_provisionalDocumentLoader.get(), m_provisionalDocumentLoader->originalRequest());
    28272828
    28282829    if (!m_provisionalDocumentLoader->startLoadingMainResource(identifier))
     
    29862987    saveScrollPositionAndViewStateToItem(currentHistoryItem());
    29872988    detachChildren();
     2989
     2990    if (m_frame->page()) {
     2991        if (InspectorController* inspector = m_frame->page()->inspectorController())
     2992            inspector->frameDetachedFromParent(m_frame);
     2993    }
     2994
    29882995    m_client->detachedFromParent2();
    29892996    setDocumentLoader(0);
     
    31323139void FrameLoader::assignIdentifierToInitialRequest(unsigned long identifier, const ResourceRequest& clientRequest)
    31333140{
    3134     return m_client->assignIdentifierToInitialRequest(identifier, activeDocumentLoader(), clientRequest);
     3141    return dispatchAssignIdentifierToInitialRequest(identifier, activeDocumentLoader(), clientRequest);
    31353142}
    31363143
     
    31383145{
    31393146    applyUserAgent(clientRequest);
    3140     m_client->dispatchWillSendRequest(loader->documentLoader(), loader->identifier(), clientRequest, redirectResponse);
     3147    dispatchWillSendRequest(loader->documentLoader(), loader->identifier(), clientRequest, redirectResponse);
    31413148}
    31423149
     
    31473154    if (m_frame->page())
    31483155        m_frame->page()->progress()->incrementProgress(loader->identifier(), r);
    3149     m_client->dispatchDidReceiveResponse(loader->documentLoader(), loader->identifier(), r);
     3156    dispatchDidReceiveResponse(loader->documentLoader(), loader->identifier(), r);
    31503157}
    31513158
     
    31543161    if (m_frame->page())
    31553162        m_frame->page()->progress()->incrementProgress(loader->identifier(), data, length);
    3156     m_client->dispatchDidReceiveContentLength(loader->documentLoader(), loader->identifier(), lengthReceived);
     3163    dispatchDidReceiveContentLength(loader->documentLoader(), loader->identifier(), lengthReceived);
    31573164}
    31583165
     
    34693476{   
    34703477    if (!response.isNull())
    3471         m_client->dispatchDidReceiveResponse(m_documentLoader.get(), identifier, response);
     3478        dispatchDidReceiveResponse(m_documentLoader.get(), identifier, response);
    34723479   
    34733480    if (length > 0)
    3474         m_client->dispatchDidReceiveContentLength(m_documentLoader.get(), identifier, length);
     3481        dispatchDidReceiveContentLength(m_documentLoader.get(), identifier, length);
    34753482   
    34763483    if (error.isNull())
    3477         m_client->dispatchDidFinishLoading(m_documentLoader.get(), identifier);
     3484        dispatchDidFinishLoading(m_documentLoader.get(), identifier);
    34783485    else
    34793486        m_client->dispatchDidFailLoading(m_documentLoader.get(), identifier, error);
     
    34853492
    34863493    identifier = m_frame->page()->progress()->createUniqueIdentifier();
    3487     m_client->assignIdentifierToInitialRequest(identifier, m_documentLoader.get(), request);
     3494    dispatchAssignIdentifierToInitialRequest(identifier, m_documentLoader.get(), request);
    34883495
    34893496    ResourceRequest newRequest(request);
    3490     m_client->dispatchWillSendRequest(m_documentLoader.get(), identifier, newRequest, ResourceResponse());
     3497    dispatchWillSendRequest(m_documentLoader.get(), identifier, newRequest, ResourceResponse());
    34913498
    34923499    if (newRequest.isNull())
     
    35003507void FrameLoader::loadedResourceFromMemoryCache(const ResourceRequest& request, const ResourceResponse& response, int length)
    35013508{
    3502     if (m_client->dispatchDidLoadResourceFromMemoryCache(m_documentLoader.get(), request, response, length))
     3509    if (dispatchDidLoadResourceFromMemoryCache(m_documentLoader.get(), request, response, length))
    35033510        return;
    35043511
     
    42024209    if (m_frame->page())
    42034210        m_frame->page()->progress()->completeProgress(loader->identifier());
    4204     m_client->dispatchDidFinishLoading(loader->documentLoader(), loader->identifier());
     4211    dispatchDidFinishLoading(loader->documentLoader(), loader->identifier());
    42054212}
    42064213
     
    43184325}
    43194326
    4320 void FrameLoader::partClearedInBegin()
     4327void FrameLoader::dispatchWindowObjectAvailable()
    43214328{
    43224329    Settings* settings = m_frame->settings();
    4323     if (settings && settings->isJavaScriptEnabled())
     4330    if (settings && settings->isJavaScriptEnabled()) {
    43244331        m_client->windowObjectCleared();
     4332
     4333        if (InspectorController* inspector = m_frame->page()->parentInspectorController())
     4334            inspector->windowScriptObjectAvailable();
     4335    }
    43254336}
    43264337
     
    44054416    String scheme = url.left(loc);
    44064417    return localSchemes().contains(scheme);
     4418}
     4419
     4420void FrameLoader::dispatchDidCommitLoad()
     4421{
     4422    m_client->dispatchDidCommitLoad();
     4423
     4424    if (InspectorController* inspector = m_frame->page()->inspectorController())
     4425        inspector->didCommitLoad(m_documentLoader.get());
     4426}
     4427
     4428void FrameLoader::dispatchAssignIdentifierToInitialRequest(unsigned long identifier, DocumentLoader* loader, const ResourceRequest& request)
     4429{
     4430    m_client->assignIdentifierToInitialRequest(identifier, loader, request);
     4431
     4432    if (InspectorController* inspector = m_frame->page()->inspectorController())
     4433        inspector->identifierForInitialRequest(identifier, loader, request);
     4434}
     4435
     4436void FrameLoader::dispatchWillSendRequest(DocumentLoader* loader, unsigned long identifier, ResourceRequest& request, const ResourceResponse& redirectResponse)
     4437{
     4438    m_client->dispatchWillSendRequest(loader, identifier, request, redirectResponse);
     4439
     4440    if (InspectorController* inspector = m_frame->page()->inspectorController())
     4441        inspector->willSendRequest(loader, identifier, request, redirectResponse);
     4442}
     4443
     4444void FrameLoader::dispatchDidReceiveResponse(DocumentLoader* loader, unsigned long identifier, const ResourceResponse& r)
     4445{
     4446    m_client->dispatchDidReceiveResponse(loader, identifier, r);
     4447
     4448    if (InspectorController* inspector = m_frame->page()->inspectorController())
     4449        inspector->didReceiveResponse(loader, identifier, r);
     4450}
     4451
     4452void FrameLoader::dispatchDidReceiveContentLength(DocumentLoader* loader, unsigned long identifier, int length)
     4453{
     4454    m_client->dispatchDidReceiveContentLength(loader, identifier, length);
     4455
     4456    if (InspectorController* inspector = m_frame->page()->inspectorController())
     4457        inspector->didReceiveContentLength(loader, identifier, length);
     4458}
     4459
     4460void FrameLoader::dispatchDidFinishLoading(DocumentLoader* loader, unsigned long identifier)
     4461{
     4462    m_client->dispatchDidFinishLoading(loader, identifier);
     4463
     4464    if (InspectorController* inspector = m_frame->page()->inspectorController())
     4465        inspector->didFinishLoading(loader, identifier);
     4466}
     4467
     4468bool FrameLoader::dispatchDidLoadResourceFromMemoryCache(DocumentLoader* loader, const ResourceRequest& request, const ResourceResponse& response, int length)
     4469{
     4470    bool result = m_client->dispatchDidLoadResourceFromMemoryCache(loader, request, response, length);
     4471
     4472    if (InspectorController* inspector = m_frame->page()->inspectorController())
     4473        inspector->didLoadResourceFromMemoryCache(loader, request, response, length);
     4474
     4475    return result;
    44074476}
    44084477
  • trunk/WebCore/loader/FrameLoader.h

    r21793 r23677  
    335335        Widget* createJavaAppletWidget(const IntSize&, Element*, const HashMap<String, String>& args);
    336336
    337         void partClearedInBegin();
     337        void dispatchWindowObjectAvailable();
    338338        void restoreDocumentState();
    339339
     
    552552#endif
    553553
     554        void dispatchDidCommitLoad();
     555        void dispatchAssignIdentifierToInitialRequest(unsigned long identifier, DocumentLoader*, const ResourceRequest&);
     556        void dispatchWillSendRequest(DocumentLoader*, unsigned long identifier, ResourceRequest&, const ResourceResponse& redirectResponse);
     557        void dispatchDidReceiveResponse(DocumentLoader*, unsigned long identifier, const ResourceResponse&);
     558        void dispatchDidReceiveContentLength(DocumentLoader*, unsigned long identifier, int length);
     559        void dispatchDidFinishLoading(DocumentLoader*, unsigned long identifier);
     560        bool dispatchDidLoadResourceFromMemoryCache(DocumentLoader*, const ResourceRequest&, const ResourceResponse&, int length);
     561
    554562        Frame* m_frame;
    555563        FrameLoaderClient* m_client;
  • trunk/WebCore/loader/FrameLoaderClient.h

    r21793 r23677  
    5959    class ResourceHandle;
    6060    class ResourceLoader;
    61     class ResourceRequest;
    6261    class ResourceResponse;
    6362    class SharedBuffer;
     
    6564    class String;
    6665    class Widget;
     66
     67    struct ResourceRequest;
    6768
    6869    typedef void (FrameLoader::*FramePolicyFunction)(PolicyAction);
  • trunk/WebCore/page/Chrome.cpp

    r23510 r23677  
    2626#include "FloatRect.h"
    2727#include "Frame.h"
     28#include "InspectorController.h"
    2829#include "Page.h"
    2930#include "ResourceHandle.h"
     
    185186    if (source == JSMessageSource && level == ErrorMessageLevel)
    186187        m_client->addMessageToConsole(message, lineNumber, sourceID);
     188
     189    if (InspectorController* inspector = m_page->inspectorController())
     190        inspector->addMessageToConsole(source, level, message, lineNumber, sourceID);
    187191}
    188192
  • trunk/WebCore/page/Chrome.h

    r21706 r23677  
    4848        XMLMessageSource,
    4949        JSMessageSource,
    50         CSSMessageSource
     50        CSSMessageSource,
     51        OtherMessageSource
    5152    };
    5253
    5354    enum MessageLevel {
     55        TipMessageLevel,
    5456        LogMessageLevel,
    5557        WarningMessageLevel,
  • trunk/WebCore/page/ContextMenuClient.h

    r19764 r23677  
    5050        virtual void speak(const String&) = 0;
    5151        virtual void stopSpeaking() = 0;
     52        virtual bool shouldIncludeInspectElementItem() = 0;
    5253
    5354#if PLATFORM(MAC)
  • trunk/WebCore/page/ContextMenuController.cpp

    r21081 r23677  
    4343#include "HitTestRequest.h"
    4444#include "HitTestResult.h"
     45#include "InspectorController.h"
    4546#include "KURL.h"
    4647#include "MouseEvent.h"
     
    9495    PlatformMenuDescription customMenu = m_client->getCustomMenuFromDefaultItems(m_contextMenu.get());
    9596    m_contextMenu->setPlatformDescription(customMenu);
     97    if (m_client->shouldIncludeInspectElementItem())
     98        m_contextMenu->addInspectElementItem();
    9699    event->setDefaultHandled();
    97100}
     
    270273            break;
    271274#endif
     275        case ContextMenuItemTagInspectElement:
     276            if (InspectorController* inspector = frame->page()->inspectorController())
     277                inspector->inspect(result.innerNonSharedNode());
     278            break;
    272279        default:
    273280            break;
  • trunk/WebCore/page/InspectorClient.h

    r23676 r23677  
    11/*
    2  * Copyright (C) 2006, 2007 Apple Inc.  All rights reserved.
     2 * Copyright (C) 2007 Apple Inc.  All rights reserved.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    2424 */
    2525
    26 #include <WebCore/ContextMenuClient.h>
    27 #include <wtf/Forward.h>
     26#ifndef InspectorClient_h
     27#define InspectorClient_h
    2828
    2929namespace WebCore {
    30     class String;
    31 }
    32 class WebView;
    3330
    34 class WebContextMenuClient : public WebCore::ContextMenuClient {
     31class Node;
     32class Page;
     33class String;
     34
     35class InspectorClient {
    3536public:
    36     WebContextMenuClient(WebView*);
     37    virtual ~InspectorClient() {  }
    3738
    38     virtual void contextMenuDestroyed();
     39    virtual void inspectorDestroyed() = 0;
    3940
    40     virtual HMENU getCustomMenuFromDefaultItems(WebCore::ContextMenu*);
    41     virtual void contextMenuItemSelected(WebCore::ContextMenuItem*, const WebCore::ContextMenu*);
    42    
    43     virtual void downloadURL(const WebCore::KURL&);
    44     virtual void searchWithGoogle(const WebCore::Frame*);
    45     virtual void lookUpInDictionary(WebCore::Frame*);
    46     virtual void speak(const WebCore::String&);
    47     virtual void stopSpeaking();
     41    virtual Page* createPage() = 0;
    4842
    49 private:
    50     WebView* m_webView;
     43    virtual void showWindow() = 0;
     44    virtual void closeWindow() = 0;
     45
     46    virtual void attachWindow() = 0;
     47    virtual void detachWindow() = 0;
     48
     49    virtual void highlight(Node*) = 0;
     50    virtual void hideHighlight() = 0;
     51
     52    virtual void inspectedURLChanged(const String& newURL) = 0;
    5153};
     54
     55} // namespace WebCore
     56
     57#endif // !defined(InspectorClient_h)
  • trunk/WebCore/page/Page.cpp

    r22065 r23677  
    3434#include "FrameView.h"
    3535#include "HistoryItem.h"
     36#include "InspectorController.h"
    3637#include "ProgressTracker.h"
    3738#include "RenderWidget.h"
     
    6465    , m_tabKeyCyclesThroughElements(true)
    6566    , m_defersLoading(false)
     67    , m_parentInspectorController(0)
    6668{
    6769    if (!allPages) {
     
    202204}
    203205
     206void Page::setInspectorClient(InspectorClient* client)
     207{
     208    m_inspectorController.set(new InspectorController(this, client));
     209}
     210
    204211} // namespace WebCore
  • trunk/WebCore/page/Page.h

    r22065 r23677  
    4545    class FocusController;
    4646    class Frame;
     47    class InspectorClient;
     48    class InspectorController;
    4749    class Node;
    4850    class ProgressTracker;
     
    8890        FocusController* focusController() const { return m_focusController.get(); }
    8991        ContextMenuController* contextMenuController() const { return m_contextMenuController.get(); }
     92        InspectorController* inspectorController() const { return m_inspectorController.get(); }
    9093        Settings* settings() const { return m_settings.get(); }
    9194        ProgressTracker* progress() const { return m_progress.get(); }
     95
     96        void setInspectorClient(InspectorClient*);
     97
     98        void setParentInspectorController(InspectorController* controller) { m_parentInspectorController = controller; }
     99        InspectorController* parentInspectorController() const { return m_parentInspectorController; }
    92100       
    93101        void setTabKeyCyclesThroughElements(bool b) { m_tabKeyCyclesThroughElements = b; }
     
    113121        OwnPtr<FocusController> m_focusController;
    114122        OwnPtr<ContextMenuController> m_contextMenuController;
     123        OwnPtr<InspectorController> m_inspectorController;
    115124        OwnPtr<Settings> m_settings;
    116125        OwnPtr<ProgressTracker> m_progress;
     
    128137        bool m_defersLoading;
    129138
     139        InspectorController* m_parentInspectorController;
     140
    130141#if PLATFORM(WIN)
    131142        static HINSTANCE s_instanceHandle;
  • trunk/WebCore/page/inspector/treeoutline.js

    r23676 r23677  
    5353        lastChild.nextSibling = child;
    5454        child.previousSibling = lastChild;
     55    } else {
     56        child.previousSibling = null;
     57        child.nextSibling = null;
    5558    }
    5659
     
    6164    child.treeOutline._rememberTreeElement(child);
    6265
     66    var current = child.children[0];
     67    while (current) {
     68        current.treeOutline = this.treeOutline;
     69        current.treeOutline._rememberTreeElement(current);
     70        current = current.traverseNextTreeElement(false, child, true);
     71    }
     72
    6373    if (child.hasChildren && child.treeOutline._treeElementsExpandedState[child.identifier] !== undefined)
    6474        child.expanded = child.treeOutline._treeElementsExpandedState[child.identifier];
    6575
    66     if (this.expanded || this.root)
    67         child._attach();
     76    if (!this._childrenListNode) {
     77        this._childrenListNode = this.treeOutline._childrenListNode.ownerDocument.createElement("ol");
     78        this._childrenListNode.parentTreeElement = this;
     79        this._childrenListNode.addStyleClass("children");
     80        if (this.hidden)
     81            this._childrenListNode.addStyleClass("hidden");
     82    }
     83
     84    child._attach();
     85}
     86
     87TreeOutline._insertChild = function(child, index)
     88{
     89    if (!child)
     90        throw("child can't be undefined or null");
     91
     92    var previousChild = (index > 0 ? this.children[index - 1] : null);
     93    if (previousChild) {
     94        previousChild.nextSibling = child;
     95        child.previousSibling = previousChild;
     96    } else {
     97        child.previousSibling = null;
     98    }
     99
     100    var nextChild = this.children[index];
     101    if (nextChild) {
     102        nextChild.previousSibling = child;
     103        child.nextSibling = nextChild;
     104    } else {
     105        child.nextSibling = null;
     106    }
     107
     108    this.children.splice(index, 0, child);
     109    this.hasChildren = true;
     110    child.parent = this;
     111    child.treeOutline = this.treeOutline;
     112    child.treeOutline._rememberTreeElement(child);
     113
     114    var current = child.children[0];
     115    while (current) {
     116        current.treeOutline = this.treeOutline;
     117        current.treeOutline._rememberTreeElement(current);
     118        current = current.traverseNextTreeElement(false, child, true);
     119    }
     120
     121    if (child.hasChildren && child.treeOutline._treeElementsExpandedState[child.identifier] !== undefined)
     122        child.expanded = child.treeOutline._treeElementsExpandedState[child.identifier];
     123
     124    if (!this._childrenListNode) {
     125        this._childrenListNode = this.treeOutline._childrenListNode.ownerDocument.createElement("ol");
     126        this._childrenListNode.parentTreeElement = this;
     127        this._childrenListNode.addStyleClass("children");
     128        if (this.hidden)
     129            this._childrenListNode.addStyleClass("hidden");
     130    }
     131
     132    child._attach();
    68133}
    69134
     
    111176
    112177    this.children = [];
     178
     179    if (this._childrenListNode)
     180        this._childrenListNode.offsetTop; // force layout
    113181}
    114182
     
    131199        child._detach();
    132200        child.children = [];
    133         child.hasChildren = false;
    134201        child.treeOutline = null;
    135202        child.parent = null;
     
    170237}
    171238
    172 TreeOutline.prototype.findTreeElement = function(representedObject)
    173 {
    174     if (!representedObject || !representedObject.__treeElementIdentifier)
     239TreeOutline.prototype.findTreeElement = function(representedObject, isAncestor, getParent)
     240{
     241    if (!representedObject)
    175242        return null;
    176243
    177     var elements = this._knownTreeElements[representedObject.__treeElementIdentifier];
    178     if (!elements)
     244    if ("__treeElementIdentifier" in representedObject) {
     245        var elements = this._knownTreeElements[representedObject.__treeElementIdentifier];
     246        if (!elements)
     247            return null;
     248
     249        for (var i = 0; i < elements.length; ++i)
     250            if (elements[i].representedObject === representedObject)
     251                return elements[i];
     252    }
     253
     254    if (!isAncestor || !(isAncestor instanceof Function) || !getParent || !(getParent instanceof Function))
    179255        return null;
    180256
    181     for (var i = 0; i < elements.length; ++i)
    182         if (elements[i].representedObject === representedObject)
    183             return elements[i];
    184 
    185     return null;
     257    var item;
     258    var found = false;
     259    for (var i = 0; i < this.children.length; ++i) {
     260        item = this.children[i];
     261        if (item.representedObject === representedObject || isAncestor(item.representedObject, representedObject)) {
     262            found = true;
     263            break;
     264        }
     265    }
     266
     267    if (!found)
     268        return null;
     269
     270    var ancestors = [];
     271    var currentObject = representedObject;
     272    while (currentObject) {
     273        ancestors.unshift(currentObject);
     274        if (currentObject === item.representedObject)
     275            break;
     276        currentObject = getParent(currentObject);
     277    }
     278
     279    for (var i = 0; i < ancestors.length; ++i) {
     280        item = this.findTreeElement(ancestors[i]);
     281        if (ancestors[i] !== representedObject && item.onpopulate)
     282            item.onpopulate(item);
     283    }
     284
     285    return item;
    186286}
    187287
     
    189289{
    190290    if (!this.selectedTreeElement || event.shiftKey || event.metaKey || event.ctrlKey)
    191         return;
     291        return false;
    192292
    193293    var handled = false;
     
    195295    if (event.keyIdentifier === "Up" && !event.altKey) {
    196296        nextSelectedElement = this.selectedTreeElement.traversePreviousTreeElement(true);
    197         handled = true;
     297        while (nextSelectedElement && !nextSelectedElement.selectable)
     298            nextSelectedElement = nextSelectedElement.traversePreviousTreeElement(false);
     299        handled = nextSelectedElement ? true : false;
    198300    } else if (event.keyIdentifier === "Down" && !event.altKey) {
    199301        nextSelectedElement = this.selectedTreeElement.traverseNextTreeElement(true);
    200         handled = true;
     302        while (nextSelectedElement && !nextSelectedElement.selectable)
     303            nextSelectedElement = nextSelectedElement.traverseNextTreeElement(false);
     304        handled = nextSelectedElement ? true : false;
    201305    } else if (event.keyIdentifier === "Left") {
    202306        if (this.selectedTreeElement.expanded) {
     
    207311            handled = true;
    208312        } else if (this.selectedTreeElement.parent && !this.selectedTreeElement.parent.root) {
    209             nextSelectedElement = this.selectedTreeElement.parent;
    210313            handled = true;
     314            if (this.selectedTreeElement.parent.selectable) {
     315                nextSelectedElement = this.selectedTreeElement.parent;
     316                handled = nextSelectedElement ? true : false;
     317            } else if (this.selectedTreeElement.parent)
     318                this.selectedTreeElement.parent.collapse();
    211319        }
    212320    } else if (event.keyIdentifier === "Right") {
    213         if (this.selectedTreeElement.hasChildren) {
    214             if (event.altKey)
    215                 this.selectedTreeElement.expandRecursively();
    216             else
    217                 this.selectedTreeElement.expand();
     321        if (!this.selectedTreeElement.revealed()) {
     322            this.selectedTreeElement.reveal();
    218323            handled = true;
     324        } else if (this.selectedTreeElement.hasChildren) {
     325            handled = true;
     326            if (this.selectedTreeElement.expanded) {
     327                nextSelectedElement = this.selectedTreeElement.children[0];
     328                handled = nextSelectedElement ? true : false;
     329            } else {
     330                if (event.altKey)
     331                    this.selectedTreeElement.expandRecursively();
     332                else
     333                    this.selectedTreeElement.expand();
     334            }
    219335        }
     336    }
     337
     338    if (nextSelectedElement) {
     339        nextSelectedElement.reveal();
     340        nextSelectedElement.select();
    220341    }
    221342
     
    225346    }
    226347
    227     if (nextSelectedElement) {
    228         nextSelectedElement.reveal();
    229         nextSelectedElement.select();
    230     }
     348    return handled;
    231349}
    232350
     
    252370
    253371TreeOutline.prototype.appendChild = TreeOutline._appendChild;
     372TreeOutline.prototype.insertChild = TreeOutline._insertChild;
    254373TreeOutline.prototype.removeChild = TreeOutline._removeChild;
    255374TreeOutline.prototype.removeChildren = TreeOutline._removeChildren;
     
    258377function TreeElement(title, representedObject, hasChildren)
    259378{
    260     this.title = title;
     379    this._title = title;
    261380    this.representedObject = representedObject;
    262381
     
    268387    }
    269388
     389    this._hidden = false;
    270390    this.expanded = false;
    271391    this.selected = false;
     392    this.selectable = true;
    272393    this.hasChildren = hasChildren;
    273394    this.children = [];
     
    286407}
    287408
    288 TreeElement.prototype.updateTitle = function(title)
    289 {
    290     this.title = title;
    291     if (this._listItemNode)
    292         this._listItemNode.innerHTML = title;
     409TreeElement.prototype = {
     410    get title() {
     411        return this._title;
     412    },
     413
     414    set title(x) {
     415        this._title = x;
     416        if (this._listItemNode)
     417            this._listItemNode.innerHTML = x;
     418    },
     419
     420    get tooltip() {
     421        return this._tooltip;
     422    },
     423
     424    set tooltip(x) {
     425        this._tooltip = x;
     426        if (this._listItemNode)
     427            this._listItemNode.title = x ? x : "";
     428    },
     429
     430    get hidden() {
     431        return this._hidden;
     432    },
     433
     434    set hidden(x) {
     435        if (this._hidden === x)
     436            return;
     437
     438        this._hidden = x;
     439
     440        if (x) {
     441            if (this._listItemNode)
     442                this._listItemNode.addStyleClass("hidden");
     443            if (this._childrenListNode)
     444                this._childrenListNode.addStyleClass("hidden");
     445        } else {
     446            if (this._listItemNode)
     447                this._listItemNode.removeStyleClass("hidden");
     448            if (this._childrenListNode)
     449                this._childrenListNode.removeStyleClass("hidden");
     450        }
     451    }
    293452}
    294453
    295454TreeElement.prototype.appendChild = TreeOutline._appendChild;
     455TreeElement.prototype.insertChild = TreeOutline._insertChild;
    296456TreeElement.prototype.removeChild = TreeOutline._removeChild;
    297457TreeElement.prototype.removeChildren = TreeOutline._removeChildren;
     
    306466        this._listItemNode = this.treeOutline._childrenListNode.ownerDocument.createElement("li");
    307467        this._listItemNode.treeElement = this;
    308         this._listItemNode.innerHTML = this.title;
    309 
     468        this._listItemNode.innerHTML = this._title;
     469        this._listItemNode.title = this._tooltip ? this._tooltip : "";
     470
     471        if (this.hidden)
     472            this._listItemNode.addStyleClass("hidden");
    310473        if (this.hasChildren)
    311474            this._listItemNode.addStyleClass("parent");
     
    320483    }
    321484
    322     this.parent._childrenListNode.appendChild(this._listItemNode);
     485    this.parent._childrenListNode.insertBefore(this._listItemNode, (this.nextSibling ? this.nextSibling._listItemNode : null));
    323486    if (this._childrenListNode)
    324         this.parent._childrenListNode.appendChild(this._childrenListNode);
    325     else if (this.hasChildren && this.expanded)
     487        this.parent._childrenListNode.insertBefore(this._childrenListNode, this._listItemNode.nextSibling);
     488    if (this.selected)
     489        this.select();
     490    if (this.expanded)
    326491        this.expand();
    327492}
     
    338503{
    339504    var element = event.currentTarget;
    340     if (!element || !element.treeElement)
     505    if (!element || !element.treeElement || !element.treeElement.selectable)
    341506        return;
    342507
     
    413578            this._childrenListNode.parentNode.removeChild(this._childrenListNode);
    414579
    415         if (this.refreshChildren)
    416             this.children = [];
    417 
    418580        this._childrenListNode = this.treeOutline._childrenListNode.ownerDocument.createElement("ol");
    419581        this._childrenListNode.parentTreeElement = this;
    420582        this._childrenListNode.addStyleClass("children");
     583
     584        if (this.hidden)
     585            this._childrenListNode.addStyleClass("hidden");
    421586
    422587        if (this.onpopulate)
     
    429594
    430595        delete this.refreshChildren;
    431 
    432         if (this._listItemNode)
    433             this._listItemNode.parentNode.insertBefore(this._childrenListNode, this._listItemNode.nextSibling);
    434     }
    435 
    436     if (this._listItemNode)
     596    }
     597
     598    if (this._listItemNode) {
    437599        this._listItemNode.addStyleClass("expanded");
     600        if (this._childrenListNode.parentNode != this._listItemNode.parentNode)
     601            this.parent._childrenListNode.insertBefore(this._childrenListNode, this._listItemNode.nextSibling);
     602    }
     603
    438604    if (this._childrenListNode)
    439605        this._childrenListNode.addStyleClass("expanded");
     
    481647}
    482648
    483 TreeElement.prototype.select = function()
    484 {
    485     if (!this.treeOutline)
     649TreeElement.prototype.select = function(supressOnSelect)
     650{
     651    if (!this.treeOutline || !this.selectable || this.selected)
    486652        return;
    487653
    488     if (this.treeOutline.selectedTreeElement) {
    489         this.treeOutline.selectedTreeElement.selected = false;
    490         if (this.treeOutline.selectedTreeElement._listItemNode)
    491             this.treeOutline.selectedTreeElement._listItemNode.removeStyleClass("selected");
    492     }
     654    if (this.treeOutline.selectedTreeElement)
     655        this.treeOutline.selectedTreeElement.deselect();
    493656
    494657    this.selected = true;
     
    497660        this._listItemNode.addStyleClass("selected");
    498661
    499     if (this.onselect)
     662    if (this.onselect && !supressOnSelect)
    500663        this.onselect(this);
    501664}
    502665
    503 TreeElement.prototype.deselect = function()
    504 {
    505     if (!this.treeOutline || this.treeOutline.selectedTreeElement !== this)
     666TreeElement.prototype.deselect = function(supressOnDeselect)
     667{
     668    if (!this.treeOutline || this.treeOutline.selectedTreeElement !== this || !this.selected)
    506669        return;
    507670
     
    511674        this._listItemNode.removeStyleClass("selected");
    512675
    513     if (this.ondeselect)
     676    if (this.ondeselect && !supressOnDeselect)
    514677        this.ondeselect(this);
    515678}
  • trunk/WebCore/page/mac/WebCoreViewFactory.h

    r19919 r23677  
    9090- (NSString *)contextMenuItemTagLeftToRight;
    9191- (NSString *)contextMenuItemTagRightToLeft;
     92- (NSString *)contextMenuItemTagInspectElement;
    9293
    9394- (NSString *)searchMenuNoRecentSearchesText;
  • trunk/WebCore/platform/ContextMenu.cpp

    r21237 r23677  
    378378}
    379379
     380void ContextMenu::addInspectElementItem()
     381{
     382    Node* node = m_hitTestResult.innerNonSharedNode();
     383    if (!node)
     384        return;
     385
     386    Frame* frame = node->document()->frame();
     387    if (!frame)
     388        return;
     389
     390    if (!frame->page()->inspectorController())
     391        return;
     392
     393    ContextMenuItem InspectElementItem(ActionType, ContextMenuItemTagInspectElement, contextMenuItemTagInspectElement());
     394    // FIXME: Need to only add this if the developer tools preference is set
     395    appendItem(*separatorItem());
     396    appendItem(InspectElementItem);
     397}
     398
    380399static bool triStateToBool(Frame::TriState state)
    381400{
     
    517536        case ContextMenuItemTagPDFSinglePageScrolling:
    518537        case ContextMenuItemTagPDFFacingPagesScrolling:
     538        case ContextMenuItemTagInspectElement:
    519539        case ContextMenuItemBaseApplicationTag:
    520540            break;
  • trunk/WebCore/platform/ContextMenu.h

    r20475 r23677  
    5252
    5353        void populate();
     54        void addInspectElementItem();
    5455        void checkOrEnableIfNeeded(ContextMenuItem&) const;
    5556
  • trunk/WebCore/platform/ContextMenuItem.h

    r20862 r23677  
    120120        ContextMenuItemTagPDFSinglePageScrolling,
    121121        ContextMenuItemTagPDFFacingPagesScrolling,
     122        ContextMenuItemTagInspectElement,
    122123        ContextMenuItemBaseApplicationTag = 10000
    123124    };
  • trunk/WebCore/platform/LocalizedStrings.h

    r19919 r23677  
    8282    String contextMenuItemTagStopSpeaking();
    8383#endif
     84    String contextMenuItemTagInspectElement();
    8485
    8586    String searchMenuNoRecentSearchesText();
  • trunk/WebCore/platform/graphics/svg/SVGImageEmptyClients.h

    r21793 r23677  
    370370    virtual void speak(const String&) { }
    371371    virtual void stopSpeaking() { }
    372    
     372    virtual bool shouldIncludeInspectElementItem() { return false; }
     373
    373374#if PLATFORM(MAC)
    374375    virtual void searchWithSpotlight() { }
  • trunk/WebCore/platform/mac/LocalizedStringsMac.mm

    r19919 r23677  
    425425}
    426426
     427String contextMenuItemTagInspectElement()
     428{
     429    BEGIN_BLOCK_OBJC_EXCEPTIONS;
     430    return [[WebCoreViewFactory sharedFactory] contextMenuItemTagInspectElement];
     431    END_BLOCK_OBJC_EXCEPTIONS;
     432    return String();
     433}
     434
    427435String searchMenuNoRecentSearchesText()
    428436{
  • trunk/WebCore/platform/win/ScrollViewWin.cpp

    r23462 r23677  
    425425    if (m_data->m_inUpdateScrollbars)
    426426        return;
     427
     428    // FIXME: This code is here so we don't have to fork FrameView.h/.cpp.
     429    // In the end, FrameView should just merge with ScrollView.
     430    if (static_cast<const FrameView*>(this)->frame()->prohibitsScrolling())
     431        return;
    427432   
    428433    m_data->m_inUpdateScrollbars = true;
  • trunk/WebKit/ChangeLog

    r23654 r23677  
     12007-06-20  Adam Roben  <aroben@apple.com>
     2
     3        Land the new Inspector.
     4
     5        Co-written with Tim Hatcher.
     6
     7        Reviewed by Anders, Adele, Hyatt, and Sam.
     8
     9        Implement the InspectorClient interface.
     10
     11        * WebCoreSupport/WebInspectorClient.h: Added.
     12        * WebCoreSupport/WebInspectorClient.mm: Added.
     13        (WebInspectorClient::WebInspectorClient):
     14        (WebInspectorClient::inspectorDestroyed):
     15        (WebInspectorClient::createPage):
     16        (WebInspectorClient::showWindow):
     17        (WebInspectorClient::closeWindow):
     18        (WebInspectorClient::attachWindow):
     19        (WebInspectorClient::detachWindow):
     20        (WebInspectorClient::highlight):
     21        (WebInspectorClient::hideHighlight):
     22        (WebInspectorClient::inspectedURLChanged):
     23        (WebInspectorClient::updateWindowTitle):
     24        (-[WebInspectorWindowController init]):
     25        (-[WebInspectorWindowController initWithInspectedWebView:]):
     26        (-[WebInspectorWindowController dealloc]):
     27        (-[WebInspectorWindowController inspectorVisible]):
     28        (-[WebInspectorWindowController webView]):
     29        (-[WebInspectorWindowController window]):
     30        (-[WebInspectorWindowController windowShouldClose:]):
     31        (-[WebInspectorWindowController close]):
     32        (-[WebInspectorWindowController showWindow:]):
     33        (-[WebInspectorWindowController attach]):
     34        (-[WebInspectorWindowController detach]):
     35        (-[WebInspectorWindowController highlightAndScrollToNode:]):
     36        (-[WebInspectorWindowController highlightNode:]):
     37        (-[WebInspectorWindowController hideHighlight]):
     38        (-[WebInspectorWindowController animationDidEnd:]):
     39
     40        Add an easier-to-see highlight.
     41
     42        * Misc/WebNSViewExtras.h:
     43        * Misc/WebNSViewExtras.m:
     44        (-[NSView _web_convertRect:toView:]):
     45        * WebInspector/WebNodeHighlight.h:
     46        * WebInspector/WebNodeHighlight.m:
     47        (-[WebNodeHighlightFadeInAnimation setCurrentProgress:]):
     48        (-[WebNodeHighlight initWithTargetView:]):
     49        (-[WebNodeHighlight setHighlightedNode:]):
     50        (-[WebNodeHighlight highlightedNode]):
     51        (-[WebNodeHighlight dealloc]):
     52        (-[WebNodeHighlight attachHighlight]):
     53        (-[WebNodeHighlight delegate]):
     54        (-[WebNodeHighlight detachHighlight]):
     55        (-[WebNodeHighlight show]):
     56        (-[WebNodeHighlight hide]):
     57        (-[WebNodeHighlight animationDidEnd:]):
     58        (-[WebNodeHighlight ignoresMouseEvents]):
     59        (-[WebNodeHighlight highlightView]):
     60        (-[WebNodeHighlight setDelegate:]):
     61        (-[WebNodeHighlight setHolesNeedUpdateInTargetViewRect:]):
     62        (-[WebNodeHighlight setIgnoresMouseEvents:]):
     63        (-[WebNodeHighlight targetView]):
     64        (-[WebNodeHighlight _computeHighlightWindowFrame]):
     65        (-[WebNodeHighlight _repositionHighlightWindow]):
     66        * WebInspector/WebNodeHighlightView.h:
     67        * WebInspector/WebNodeHighlightView.m:
     68        (-[WebNodeHighlightView initWithWebNodeHighlight:]):
     69        (-[WebNodeHighlightView dealloc]):
     70        (-[WebNodeHighlightView detachFromWebNodeHighlight]):
     71        (-[WebNodeHighlightView drawRect:]):
     72        (-[WebNodeHighlightView webNodeHighlight]):
     73        (-[WebNodeHighlightView fractionFadedIn]):
     74        (-[WebNodeHighlightView setFractionFadedIn:]):
     75        (-[WebNodeHighlightView setHolesNeedUpdateInRect:]):
     76        (-[WebNodeHighlightView _holes]):
     77
     78        WebView changes needed for the new Inspector.
     79
     80        * WebView/WebView.mm: Remove the old _inspectElement method now that
     81        this is handled by WebCore.
     82        (-[WebView _isClosed]): Added.
     83        (-[WebView initWithFrame]): Give each Page an InspectorClient to
     84        enable the Inspector.
     85        * WebView/WebViewPrivate.h:
     86
     87        Updates needed for WebCore changes.
     88
     89        * WebCoreSupport/WebContextMenuClient.h:
     90        * WebCoreSupport/WebContextMenuClient.mm:
     91        * WebCoreSupport/WebViewFactory.mm:
     92        (-[WebViewFactory contextMenuItemTagInspectElement]):
     93        * WebView/WebUIDelegatePrivate.h:
     94
     95        Remove old Inspector code.
     96
     97        * WebCoreSupport/WebFrameLoaderClient.mm:
     98        (WebFrameLoaderClient::dispatchDidLoadResourceFromMemoryCache):
     99        (WebFrameLoaderClient::assignIdentifierToInitialRequest):
     100        (WebFrameLoaderClient::dispatchDidFinishLoading):
     101        * WebInspector/WebInspector.m: Removed.
     102        * WebInspector/WebInspectorPanel.h: Removed.
     103        * WebInspector/WebInspectorPanel.m: Removed.
     104        * WebInspector/webInspector/Images/button.png: Removed.
     105        * WebInspector/webInspector/Images/buttonDivider.png: Removed.
     106        * WebInspector/webInspector/Images/buttonPressed.png: Removed.
     107        * WebInspector/webInspector/Images/close.png: Removed.
     108        * WebInspector/webInspector/Images/closePressed.png: Removed.
     109        * WebInspector/webInspector/Images/downTriangle.png: Removed.
     110        * WebInspector/webInspector/Images/menu.png: Removed.
     111        * WebInspector/webInspector/Images/menuPressed.png: Removed.
     112        * WebInspector/webInspector/Images/popup.png: Removed.
     113        * WebInspector/webInspector/Images/popupPressed.png: Removed.
     114        * WebInspector/webInspector/Images/resize.png: Removed.
     115        * WebInspector/webInspector/Images/rightTriangle.png: Removed.
     116        * WebInspector/webInspector/Images/scrollThumbBottom.png: Removed.
     117        * WebInspector/webInspector/Images/scrollThumbMiddle.png: Removed.
     118        * WebInspector/webInspector/Images/scrollTrackBottom.png: Removed.
     119        * WebInspector/webInspector/Images/upTriangle.png: Removed.
     120        * WebInspector/webInspector/inspector.css: Removed.
     121        * WebInspector/webInspector/inspector.html: Removed.
     122        * WebInspector/webInspector/inspector.js: Removed.
     123        * WebInspector/webInspector/scrollarea.js: Removed.
     124        * WebInspector/webInspector/scrollbar.js: Removed.
     125        * WebInspector/webInspector/utilities.js: Removed.
     126        * WebView/WebFrame.mm:
     127        (-[WebFramePrivate dealloc]):
     128        * WebView/WebFrameInternal.h:
     129        * WebView/WebHTMLView.mm:
     130        (-[WebHTMLView menuForEvent:]):
     131
     132        Build-fu:
     133
     134        * WebKit.exp:
     135        * WebKit.xcodeproj/project.pbxproj:
     136
    11372007-06-20  Justin Garcia  <justin.garcia@apple.com>
    2138
  • trunk/WebKit/Misc/WebNSViewExtras.h

    r17269 r23677  
    6969- (BOOL)_web_firstResponderIsSelfOrDescendantView;
    7070
     71- (NSRect)_web_convertRect:(NSRect)aRect toView:(NSView *)aView;
     72
    7173@end
  • trunk/WebKit/Misc/WebNSViewExtras.m

    r17269 r23677  
    227227}
    228228
     229- (NSRect)_web_convertRect:(NSRect)aRect toView:(NSView *)aView
     230{
     231    // Converting to this view's window; let -convertRect:toView: handle it
     232    if (aView == nil)
     233        return [self convertRect:aRect toView:nil];
     234       
     235    // This view must be in a window.  Do whatever weird thing -convertRect:toView: does in this situation.
     236    NSWindow *thisWindow = [self window];
     237    if (!thisWindow)
     238        return [self convertRect:aRect toView:aView];
     239   
     240    // The other view must be in a window, too.
     241    NSWindow *otherWindow = [aView window];
     242    if (!otherWindow)
     243        return [self convertRect:aRect toView:aView];
     244
     245    // Convert to this window's coordinates
     246    NSRect convertedRect = [self convertRect:aRect toView:nil];
     247   
     248    // Convert to screen coordinates
     249    convertedRect.origin = [thisWindow convertBaseToScreen:convertedRect.origin];
     250   
     251    // Convert to other window's coordinates
     252    convertedRect.origin = [otherWindow convertScreenToBase:convertedRect.origin];
     253   
     254    // Convert to other view's coordinates
     255    convertedRect = [aView convertRect:convertedRect fromView:nil];
     256   
     257    return convertedRect;
     258}
     259
    229260@end
  • trunk/WebKit/WebCoreSupport/WebContextMenuClient.h

    r19764 r23677  
    4848    virtual void stopSpeaking();
    4949    virtual void searchWithSpotlight();
     50    virtual bool shouldIncludeInspectElementItem();
    5051
    5152    WebView *webView() { return m_webView; }
  • trunk/WebKit/WebCoreSupport/WebContextMenuClient.mm

    r21240 r23677  
    289289    [NSApp stopSpeaking];
    290290}
     291
     292bool WebContextMenuClient::shouldIncludeInspectElementItem()
     293{
     294    return [WebView _developerExtrasEnabled];
     295}
  • trunk/WebKit/WebCoreSupport/WebFrameLoaderClient.mm

    r21793 r23677  
    225225void WebFrameLoaderClient::detachedFromParent2()
    226226{
    227     [m_webFrame->_private->inspectors makeObjectsPerformSelector:@selector(_webFrameDetached:) withObject:m_webFrame.get()];
    228227    [m_webFrame->_private->webFrameView _setWebFrame:nil]; // needed for now to be compatible w/ old behavior
    229228}
     
    273272{
    274273    WebView *webView = getWebView(m_webFrame.get());
     274
    275275    id resourceLoadDelegate = WebViewGetResourceLoadDelegate(webView);
    276276    WebResourceDelegateImplementationCache implementations = WebViewGetResourceLoadDelegateImplementations(webView);
    277 
    278277    if (!implementations.delegateImplementsDidLoadResourceFromMemoryCache)
    279278        return false;
     
    297296        shouldRelease = YES;
    298297    }
     298
    299299    [webView _addObject:object forIdentifier:identifier];
     300
    300301    if (shouldRelease)
    301302        [object release];
     
    384385    id resourceLoadDelegate = WebViewGetResourceLoadDelegate(webView);
    385386    WebResourceDelegateImplementationCache implementations = WebViewGetResourceLoadDelegateImplementations(webView);
    386    
     387
    387388    if (implementations.delegateImplementsDidFinishLoadingFromDataSource)
    388389        implementations.didFinishLoadingFromDataSourceFunc(resourceLoadDelegate, @selector(webView:resource:didFinishLoadingFromDataSource:), webView, [webView _objectForIdentifier:identifier], dataSource(loader));
  • trunk/WebKit/WebCoreSupport/WebInspectorClient.h

    r23676 r23677  
    2727 */
    2828
    29 // This header contains WebInspector declarations that can be used anywhere in the Web Kit, but are neither SPI nor API.
     29#import <WebCore/InspectorClient.h>
     30#import <WebCore/PlatformString.h>
    3031
    31 #import <Foundation/NSObject.h>
    32 #import <WebKit/WebInspector.h>
    33 #import <WebKit/DOMNode.h>
     32#import <wtf/RetainPtr.h>
    3433
    35 @class DOMHTMLDocument;
     34@class WebInspectorWindowController;
    3635@class WebView;
    37 @class WebFrame;
    38 @class WebNodeHighlight;
    3936
    40 @interface WebInspectorPrivate : NSObject
    41 {
    42 @public
    43     WebView *webView;
    44     WebFrame *inspectedWebFrame;
    45     WebNodeHighlight *currentHighlight;
    46 #ifndef NDEBUG
    47     NSMutableDictionary *debugFileMap;
    48 #endif
    49     BOOL webViewLoaded;
    50     BOOL preventHighlight;
    51 }
    52 @end
     37class WebInspectorClient : public WebCore::InspectorClient {
     38public:
     39    WebInspectorClient(WebView *);
    5340
    54 @interface WebInspector (WebInspectorPrivate)
    55 - (void)_highlightNode:(DOMNode *)node;
    56 - (void)_updateSystemColors;
    57 @end
     41    virtual void inspectorDestroyed();
     42
     43    virtual WebCore::Page* createPage();
     44
     45    virtual void showWindow();
     46    virtual void closeWindow();
     47
     48    virtual void attachWindow();
     49    virtual void detachWindow();
     50
     51    virtual void highlight(WebCore::Node*);
     52    virtual void hideHighlight();
     53    virtual void inspectedURLChanged(const WebCore::String& newURL);
     54
     55private:
     56    void updateWindowTitle() const;
     57
     58    WebView *m_webView;
     59    RetainPtr<WebInspectorWindowController> m_windowController;
     60    WebCore::String m_inspectedURL;
     61};
  • trunk/WebKit/WebCoreSupport/WebViewFactory.mm

    r21618 r23677  
    382382}
    383383
     384- (NSString *)contextMenuItemTagInspectElement
     385{
     386    return UI_STRING("Inspect Element", "Inspect Element context menu item");
     387}
     388
    384389- (BOOL)objectIsTextMarker:(id)object
    385390{
  • trunk/WebKit/WebInspector/WebNodeHighlight.h

    r13128 r23677  
    11/*
    2  * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
     2 * Copyright (C) 2007 Apple Inc.  All rights reserved.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    2828
    2929@class WebNodeHighlightView;
     30@class DOMNode;
    3031
    31 extern NSString *WebNodeHighlightExpiredNotification;
     32@interface WebNodeHighlight : NSObject {
     33    NSView *_targetView;
     34    NSWindow *_highlightWindow;
     35    WebNodeHighlightView *_highlightView;
     36    NSAnimation *_fadeInAnimation;
     37    DOMNode *_highlightNode;
     38    id _delegate;
     39}
     40- (id)initWithTargetView:(NSView *)targetView;
    3241
    33 @interface WebNodeHighlight : NSObject
    34 {
    35     NSWindow *_webNodeHighlightWindow;
    36     WebNodeHighlightView *_webNodeHighlightView;
    37     NSTimer *_timer;
    38     CFAbsoluteTime _startTime;
    39     CFTimeInterval _duration;
    40 }
    41 - (id)initWithBounds:(NSRect)bounds andRects:(NSArray *)rects forView:(NSView *)view;
    42 - (double)fractionComplete;
    43 - (void)expire;
     42- (void)setDelegate:(id)delegate;
     43- (id)delegate;
     44
     45- (void)attachHighlight;
     46- (void)detachHighlight;
     47
     48- (void)show;
     49- (void)hide;
     50
     51- (NSView *)targetView;
     52- (WebNodeHighlightView *)highlightView;
     53
     54- (void)setHighlightedNode:(DOMNode *)node;
     55- (DOMNode *)highlightedNode;
     56
     57// Controls whether mouse events are ignored (passed to underlying view). By default mouse events are ignored.
     58- (BOOL)ignoresMouseEvents;
     59- (void)setIgnoresMouseEvents:(BOOL)newValue;
     60
     61- (void)setHolesNeedUpdateInTargetViewRect:(NSRect)rect;
    4462@end
     63
     64@interface NSObject (WebNodeHighlightDelegate)
     65- (void)didAttachWebNodeHighlight:(WebNodeHighlight *)highlight;
     66- (void)willDetachWebNodeHighlight:(WebNodeHighlight *)highlight;
     67@end
  • trunk/WebKit/WebInspector/WebNodeHighlight.m

    r18445 r23677  
    11/*
    2  * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
     2 * Copyright (C) 2007 Apple Inc.  All rights reserved.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    2727 */
    2828
    29 #import <mach/mach_time.h>
     29#import "WebNodeHighlight.h"
    3030#import "WebNodeHighlightView.h"
    31 #import "WebNodeHighlight.h"
    32 
    33 NSString *WebNodeHighlightExpiredNotification = @"WebNodeHighlightExpiredNotification";
     31#import "WebNSViewExtras.h"
     32
     33#import <JavaScriptCore/Assertions.h>
     34
     35#define FADE_ANIMATION_DURATION 0.2
     36
     37@interface WebNodeHighlightFadeInAnimation : NSAnimation
     38@end
     39
     40@interface WebNodeHighlight (FileInternal)
     41- (NSRect)_computeHighlightWindowFrame;
     42- (void)_repositionHighlightWindow;
     43- (void)_animateFadeIn:(WebNodeHighlightFadeInAnimation *)animation;
     44@end
     45
     46@implementation WebNodeHighlightFadeInAnimation
     47
     48- (void)setCurrentProgress:(NSAnimationProgress)progress
     49{
     50    [super setCurrentProgress:progress];
     51    [(WebNodeHighlight *)[self delegate] _animateFadeIn:self];
     52}
     53
     54@end
    3455
    3556@implementation WebNodeHighlight
    36 - (id)initWithBounds:(NSRect)bounds andRects:(NSArray *)rects forView:(NSView *)view
    37 {
    38     if (![self init])
     57
     58- (id)initWithTargetView:(NSView *)targetView
     59{
     60    self = [super init];
     61    if (!self)
    3962        return nil;
    4063
    41     _startTime = 0.0;
    42     _duration = 3.0;
    43 
    44     if ([[[NSApplication sharedApplication] currentEvent] modifierFlags] & NSShiftKeyMask)
    45         _duration = 6.0;
    46 
    47     if (!rects)
    48         rects = [NSArray arrayWithObject:[NSValue valueWithRect:bounds]];
    49 
    50     _webNodeHighlightView = [[WebNodeHighlightView alloc] initWithHighlight:self andRects:rects forView:view];
    51     if (!_webNodeHighlightView) {
    52         [self release];
    53         return nil;
     64    _targetView = [targetView retain];
     65
     66    int styleMask = NSBorderlessWindowMask;
     67    NSRect contentRect = [NSWindow contentRectForFrameRect:[self _computeHighlightWindowFrame] styleMask:styleMask];
     68    _highlightWindow = [[NSWindow alloc] initWithContentRect:contentRect styleMask:styleMask backing:NSBackingStoreBuffered defer:NO];
     69    [_highlightWindow setBackgroundColor:[NSColor clearColor]];
     70    [_highlightWindow setOpaque:NO];
     71    [_highlightWindow setIgnoresMouseEvents:YES];
     72    [_highlightWindow setReleasedWhenClosed:NO];
     73
     74    _highlightView = [[WebNodeHighlightView alloc] initWithWebNodeHighlight:self];
     75    [_highlightView setFractionFadedIn:0.0];
     76    [_highlightWindow setContentView:_highlightView];
     77    [_highlightView release];
     78
     79    return self;
     80}
     81
     82- (void)setHighlightedNode:(DOMNode *)node
     83{
     84    id old = _highlightNode;
     85    _highlightNode = [node retain];
     86    [old release];
     87}
     88
     89- (DOMNode *)highlightedNode
     90{
     91    return _highlightNode;
     92}
     93
     94- (void)dealloc
     95{
     96    [self detachHighlight];
     97
     98    ASSERT(!_highlightWindow);
     99    ASSERT(!_targetView);
     100
     101    [_fadeInAnimation setDelegate:nil];
     102    [_fadeInAnimation stopAnimation];
     103    [_fadeInAnimation release];
     104
     105    [_highlightNode release];
     106
     107    [super dealloc];
     108}
     109
     110- (void)attachHighlight
     111{
     112    ASSERT(_targetView);
     113    ASSERT([_targetView window]);
     114    ASSERT(_highlightWindow);
     115
     116    // Disable screen updates so the highlight moves in sync with the view.
     117    [[_targetView window] disableScreenUpdatesUntilFlush];
     118    [[_targetView window] addChildWindow:_highlightWindow ordered:NSWindowAbove];
     119
     120    // Observe both frame-changed and bounds-changed notifications because either one could leave
     121    // the highlight incorrectly positioned with respect to the target view. We need to do this for
     122    // the entire superview hierarchy to handle scrolling, bars coming and going, etc.
     123    // (without making concrete assumptions about the view hierarchy).
     124    NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];
     125    for (NSView *v = _targetView; v; v = [v superview]) {
     126        [notificationCenter addObserver:self selector:@selector(_repositionHighlightWindow) name:NSViewFrameDidChangeNotification object:v];
     127        [notificationCenter addObserver:self selector:@selector(_repositionHighlightWindow) name:NSViewBoundsDidChangeNotification object:v];
    54128    }
    55129
    56     // adjust size and position for rect padding that the view adds
    57     bounds.origin.y -= 3.0f;
    58     bounds.origin.x -= 3.0f;
    59     bounds.size = [_webNodeHighlightView frame].size;
    60 
    61     NSRect windowBounds = [view convertRect:bounds toView:nil];
    62     windowBounds.origin = [[view window] convertBaseToScreen:windowBounds.origin]; // adjust for screen coords
    63 
    64     _webNodeHighlightWindow = [[NSWindow alloc] initWithContentRect:windowBounds styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:YES];
    65     [_webNodeHighlightWindow setBackgroundColor:[NSColor clearColor]];
    66     [_webNodeHighlightWindow setOpaque:NO];
    67     [_webNodeHighlightWindow setHasShadow:NO];
    68     [_webNodeHighlightWindow setIgnoresMouseEvents:YES];
    69     [_webNodeHighlightWindow setReleasedWhenClosed:YES];
    70     [_webNodeHighlightWindow setContentView:_webNodeHighlightView];
    71     [_webNodeHighlightView release];
    72 
    73     [[view window] addChildWindow:_webNodeHighlightWindow ordered:NSWindowAbove];
    74 
    75     // 30 frames per second time interval will play well with the CPU and still look smooth
    76     _timer = [[NSTimer scheduledTimerWithTimeInterval:(1.0 / 30.0) target:self selector:@selector(redraw:) userInfo:nil repeats:YES] retain];
    77 
    78     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(expire) name:NSViewBoundsDidChangeNotification object:view];
    79     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(expire) name:NSViewBoundsDidChangeNotification object:[view superview]];
    80     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(expire) name:NSWindowDidResizeNotification object:[view window]];
    81     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(expire) name:NSWindowWillCloseNotification object:[view window]];
    82 
    83     return self;
    84 }
    85 
    86 - (void)dealloc
    87 {
    88     [[NSNotificationCenter defaultCenter] removeObserver:self name:NSViewBoundsDidChangeNotification object:nil];
    89     [[NSNotificationCenter defaultCenter] removeObserver:self name:NSWindowDidResizeNotification object:nil];
    90     [[NSNotificationCenter defaultCenter] removeObserver:self name:NSWindowWillCloseNotification object:nil];
    91 
    92     [_timer invalidate];
    93     [_timer release];
    94 
    95     [super dealloc];
    96 }
    97 
    98 - (double)fractionComplete
    99 {
    100     if (_startTime == 0.0)
    101         _startTime = CFAbsoluteTimeGetCurrent();
    102 
    103     return ((CFAbsoluteTimeGetCurrent() - _startTime) / _duration);
    104 }
    105 
    106 - (void)expire
    107 {
    108     if (![_timer isValid])  // make sure it has not been expired already (loop prevention)
     130    if (_delegate && [_delegate respondsToSelector:@selector(didAttachWebNodeHighlight:)])
     131        [_delegate didAttachWebNodeHighlight:self];
     132}
     133
     134- (id)delegate
     135{
     136    return _delegate;
     137}
     138
     139- (void)detachHighlight
     140{
     141    if (!_highlightWindow) {
     142        ASSERT(!_targetView);
    109143        return;
    110    
    111     [_timer invalidate];
    112     [_timer release];
    113     _timer = nil;
    114 
    115     // remove this observation before closing the window (more loop prevention)
    116     [[NSNotificationCenter defaultCenter] removeObserver:self name:NSWindowWillCloseNotification object:nil];
    117     [[NSNotificationCenter defaultCenter] removeObserver:self name:NSWindowDidResizeNotification object:nil];
    118    
    119     [[_webNodeHighlightWindow parentWindow] removeChildWindow:_webNodeHighlightWindow];
    120     [_webNodeHighlightWindow close];
    121     _webNodeHighlightWindow = nil;
    122 
    123     [[NSNotificationCenter defaultCenter] postNotificationName:WebNodeHighlightExpiredNotification object:self userInfo:nil];
    124 }
    125 
    126 - (void)redraw:(NSTimer *)timer
    127 {
    128     [_webNodeHighlightView setNeedsDisplay:YES];   
    129 
    130     if (_startTime == 0.0)
    131         _startTime = CFAbsoluteTimeGetCurrent();
    132 
    133     if ((CFAbsoluteTimeGetCurrent() - _startTime) > _duration)
    134         [self expire];
    135 }
    136 @end
     144    }
     145
     146    if (_delegate && [_delegate respondsToSelector:@selector(willDetachWebNodeHighlight:)])
     147        [_delegate willDetachWebNodeHighlight:self];
     148
     149    // FIXME: is this necessary while detaching? Should test.
     150    [[_targetView window] disableScreenUpdatesUntilFlush];
     151
     152    NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];
     153    [notificationCenter removeObserver:self name:NSViewFrameDidChangeNotification object:nil];
     154    [notificationCenter removeObserver:self name:NSViewBoundsDidChangeNotification object:nil];
     155
     156    [[_highlightWindow parentWindow] removeChildWindow:_highlightWindow];
     157
     158    [_highlightWindow release];
     159    _highlightWindow = nil;
     160
     161    [_targetView release];
     162    _targetView = nil;
     163
     164    // We didn't retain _highlightView, but we do need to tell it to forget about us, so it doesn't
     165    // try to send our delegate messages after we've been dealloc'ed, e.g.
     166    [_highlightView detachFromWebNodeHighlight];
     167    _highlightView = nil;
     168}
     169
     170- (void)show
     171{
     172    ASSERT(!_fadeInAnimation);
     173    if (_fadeInAnimation || [_highlightView fractionFadedIn] == 1.0)
     174        return;
     175
     176    _fadeInAnimation = [[WebNodeHighlightFadeInAnimation alloc] initWithDuration:FADE_ANIMATION_DURATION animationCurve:NSAnimationEaseInOut];
     177    [_fadeInAnimation setAnimationBlockingMode:NSAnimationNonblocking];
     178    [_fadeInAnimation setDelegate:self];
     179    [_fadeInAnimation startAnimation];
     180}
     181
     182- (void)hide
     183{
     184    [_highlightView setFractionFadedIn:0.0];
     185}
     186
     187- (void)animationDidEnd:(NSAnimation *)animation
     188{
     189    ASSERT(animation == _fadeInAnimation);
     190    [_fadeInAnimation release];
     191    _fadeInAnimation = nil;
     192}
     193
     194- (BOOL)ignoresMouseEvents
     195{
     196    ASSERT(_highlightWindow);
     197    return [_highlightWindow ignoresMouseEvents];
     198}
     199
     200- (WebNodeHighlightView *)highlightView
     201{
     202    return _highlightView;
     203}
     204
     205- (void)setDelegate:(id)delegate
     206{
     207    // The delegate is not retained, as usual in Cocoa.
     208    _delegate = delegate;
     209}
     210
     211- (void)setHolesNeedUpdateInTargetViewRect:(NSRect)rect
     212{
     213    ASSERT(_targetView);
     214
     215    [_highlightView setHolesNeedUpdateInRect:[_targetView _web_convertRect:rect toView:_highlightView]];
     216
     217    // Redraw highlight view immediately so it updates in sync with the target view
     218    // if we called disableScreenUpdatesUntilFlush on the target view earlier. This
     219    // is especially visible when resizing the window.
     220    [_highlightView displayIfNeeded];
     221}
     222
     223- (void)setIgnoresMouseEvents:(BOOL)newValue
     224{
     225    ASSERT(_highlightWindow);
     226    [_highlightWindow setIgnoresMouseEvents:newValue];
     227}
     228
     229- (NSView *)targetView
     230{
     231    return _targetView;
     232}
     233
     234@end
     235
     236@implementation WebNodeHighlight (FileInternal)
     237
     238- (NSRect)_computeHighlightWindowFrame
     239{
     240    ASSERT(_targetView);
     241    ASSERT([_targetView window]);
     242
     243    NSRect highlightWindowFrame = [_targetView convertRect:[_targetView visibleRect] toView:nil];
     244    highlightWindowFrame.origin = [[_targetView window] convertBaseToScreen:highlightWindowFrame.origin];
     245
     246    return highlightWindowFrame;
     247}
     248
     249- (void)_repositionHighlightWindow
     250{
     251    ASSERT([_targetView window]);
     252
     253    // Disable screen updates so the highlight moves in sync with the view.
     254    [[_targetView window] disableScreenUpdatesUntilFlush];
     255
     256    [_highlightWindow setFrame:[self _computeHighlightWindowFrame] display:YES];
     257}
     258
     259- (void)_animateFadeIn:(WebNodeHighlightFadeInAnimation *)animation
     260{
     261    [_highlightView setFractionFadedIn:[animation currentValue]];
     262}
     263
     264@end
  • trunk/WebKit/WebInspector/WebNodeHighlightView.h

    r13090 r23677  
    2929@class WebNodeHighlight;
    3030
    31 @interface WebNodeHighlightView : NSView
    32 {
    33     WebNodeHighlight *_highlight;
    34     NSImage *_highlightRingImage;
     31@interface WebNodeHighlightView : NSView {
     32    WebNodeHighlight *_webNodeHighlight;
     33    float _fractionFadedIn;
    3534}
    36 - (id)initWithHighlight:(WebNodeHighlight *)hightlight andRects:(NSArray *)rects forView:(NSView *)view;
     35- (id)initWithWebNodeHighlight:(WebNodeHighlight *)webNodeHighlight;
     36
     37- (WebNodeHighlight *)webNodeHighlight;
     38- (void)detachFromWebNodeHighlight;
     39
     40// Value between 0.0 (completely faded out of view) and 1.0 (completely faded into view) that represents
     41// the progress of the fading animation.
     42- (float)fractionFadedIn;
     43- (void)setFractionFadedIn:(float)alpha;
     44
     45- (void)setHolesNeedUpdateInRect:(NSRect)rect;
    3746@end
  • trunk/WebKit/WebInspector/WebNodeHighlightView.m

    r21091 r23677  
    2727 */
    2828
     29#import "WebNodeHighlightView.h"
    2930#import "WebNodeHighlight.h"
    30 #import "WebNodeHighlightView.h"
    31 #import <WebKitSystemInterface.h>
     31#import "WebNSViewExtras.h"
     32
     33#import <WebKit/DOMCore.h>
     34#import <WebKit/DOMExtensions.h>
     35
     36#import <JavaScriptCore/Assertions.h>
     37
     38#define OVERLAY_MAX_ALPHA 0.7
     39#define OVERLAY_WHITE_VALUE 0.1
     40
     41#define WHITE_FRAME_THICKNESS 1.0
     42
     43@interface WebNodeHighlightView (FileInternal)
     44- (NSArray *)_holes;
     45@end
    3246
    3347@implementation WebNodeHighlightView
    34 - (NSBezierPath *)roundedRect:(NSRect)rect withRadius:(float)radius
     48
     49- (id)initWithWebNodeHighlight:(WebNodeHighlight *)webNodeHighlight
    3550{
    36     NSBezierPath *path = [[NSBezierPath alloc] init];
    37 
    38     NSRect irect = NSInsetRect(rect, radius, radius);
    39     [path appendBezierPathWithArcWithCenter:NSMakePoint(NSMinX(irect), NSMinY(irect)) radius:radius startAngle:180.0f endAngle:270.0f];
    40     [path appendBezierPathWithArcWithCenter:NSMakePoint(NSMaxX(irect), NSMinY(irect)) radius:radius startAngle:270.0f endAngle:360.0f];
    41     [path appendBezierPathWithArcWithCenter:NSMakePoint(NSMaxX(irect), NSMaxY(irect)) radius:radius startAngle:0.0f endAngle:90.0f];
    42     [path appendBezierPathWithArcWithCenter:NSMakePoint(NSMinX(irect), NSMaxY(irect)) radius:radius startAngle:90.0f endAngle:180.0f];
    43     [path closePath];
    44 
    45     return [path autorelease];
    46 }
    47 
    48 - (id)initWithHighlight:(WebNodeHighlight *)highlight andRects:(NSArray *)rects forView:(NSView *)view
    49 {
    50     if (![self init])
     51    self = [self initWithFrame:NSZeroRect];
     52    if (!self)
    5153        return nil;
    5254
    53     _highlight = highlight; // don't retain, would cause a circular retain
    54 
    55     NSRect visibleRect = [view visibleRect];
    56 
    57     NSRect rect = NSZeroRect;
    58     NSBezierPath *path = nil;
    59     NSBezierPath *straightPath = nil;
    60 
    61     if([rects count] == 1) {
    62         NSValue *value = (NSValue *)[rects objectAtIndex:0];
    63         rect = NSInsetRect([value rectValue], -1.0f, -1.0f);
    64         rect = NSIntersectionRect(rect, visibleRect);
    65         if (!NSIsEmptyRect(rect))
    66             path = [[self roundedRect:rect withRadius:3.0f] retain];
    67 
    68         // shift everything to the corner
    69         NSAffineTransform *transform = [[NSAffineTransform alloc] init];
    70         [transform translateXBy:(NSMinX(rect) * -1.0f) + 2.5f yBy:(NSMinY(rect) * -1.0f) + 2.5f];
    71         [path transformUsingAffineTransform:transform];
    72         [straightPath transformUsingAffineTransform:transform];
    73         [transform release];
    74     } else if ([rects count] > 1) {
    75         path = [[NSBezierPath alloc] init];
    76         straightPath = [path copy];
    77 
    78         // roundedRect: returns an autoreleased path, so release them soon with a pool
    79         NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    80 
    81         NSEnumerator *enumerator = [rects objectEnumerator];
    82         NSValue *value = nil;
    83         while ((value = [enumerator nextObject])) {
    84             rect = NSIntersectionRect([value rectValue], visibleRect);
    85             if (!NSIsEmptyRect(rect)) {
    86                 [straightPath appendBezierPathWithRect:rect];
    87                 [path appendBezierPath:[self roundedRect:rect withRadius:3.0f]];
    88             }
    89         }
    90 
    91         [pool drain];
    92 
    93         rect = [path bounds];
    94 
    95         [straightPath setWindingRule:NSNonZeroWindingRule];
    96         [straightPath setLineJoinStyle:NSRoundLineJoinStyle];
    97         [straightPath setLineCapStyle:NSRoundLineCapStyle];
    98 
    99         // multiple rects we get from WebCore need flipped to show up correctly
    100         NSAffineTransform *transform = [[NSAffineTransform alloc] init];
    101         [transform scaleXBy:1.0f yBy:-1.0f];
    102         [path transformUsingAffineTransform:transform];
    103         [straightPath transformUsingAffineTransform:transform];
    104         [transform release];
    105 
    106         // shift everything to the corner
    107         transform = [[NSAffineTransform alloc] init];
    108         [transform translateXBy:(NSMinX(rect) * -1.0f) + 2.5f yBy:NSMaxY(rect) + 2.5f];
    109         [path transformUsingAffineTransform:transform];
    110         [straightPath transformUsingAffineTransform:transform];
    111         [transform release];
    112     }
    113 
    114     if (!path || [path isEmpty]) {
    115         [self release];
    116         return nil;
    117     }
    118 
    119     [path setWindingRule:NSNonZeroWindingRule];
    120     [path setLineJoinStyle:NSRoundLineJoinStyle];
    121     [path setLineCapStyle:NSRoundLineCapStyle];
    122 
    123     // make the drawing area larger for the focus ring blur
    124     rect = [path bounds];
    125     rect.size.width += 5.0f;
    126     rect.size.height += 5.0f;
    127     [self setFrameSize:rect.size];
    128 
    129     // draw into an image
    130     _highlightRingImage = [[NSImage alloc] initWithSize:rect.size];
    131     [_highlightRingImage lockFocus];
    132     [NSGraphicsContext saveGraphicsState];
    133 
    134     if (straightPath) {
    135         [[NSColor redColor] set];
    136         [path setLineWidth:4.0f];
    137         [path stroke];
    138 
    139         // clear the center to eliminate thick inner strokes for overlapping rects
    140         [[NSGraphicsContext currentContext] setCompositingOperation:NSCompositeClear];
    141         [path fill];
    142 
    143         // stroke the straight line path with a light color to show any inner rects
    144         [[NSGraphicsContext currentContext] setCompositingOperation:NSCompositeDestinationOver];
    145         [[[NSColor redColor] colorWithAlphaComponent:0.6f] set];
    146         [straightPath setLineWidth:1.0f];
    147         [straightPath stroke];
    148     } else {
    149         [[NSColor redColor] set];
    150         [path setLineWidth:2.0f];
    151         [path stroke];
    152     }
    153 
    154     [NSGraphicsContext restoreGraphicsState];
    155     [_highlightRingImage unlockFocus];
    156 
    157     [path release];
    158     [straightPath release];
     55    _webNodeHighlight = [webNodeHighlight retain];
    15956
    16057    return self;
     
    16360- (void)dealloc
    16461{
    165     [_highlightRingImage release];
     62    [self detachFromWebNodeHighlight];
    16663    [super dealloc];
    16764}
    16865
    169 - (BOOL)isOpaque
     66- (void)detachFromWebNodeHighlight
    17067{
    171     return NO;
     68    [_webNodeHighlight release];
     69    _webNodeHighlight = nil;
    17270}
    17371
    174 - (void)drawRect:(NSRect)rect
     72- (void)drawRect:(NSRect)rect 
    17573{
    176     double alpha = 1.0 - [_highlight fractionComplete];
    177     if (alpha > 1.0)
    178         alpha = 1.0;
    179     else if (alpha < 0.0)
    180         alpha = 0.0;
     74    [NSGraphicsContext saveGraphicsState];
    18175
    182     [_highlightRingImage drawInRect:rect fromRect:rect operation:NSCompositeCopy fraction:(float)alpha];
     76    // draw translucent gray fill, out of which we will cut holes
     77    [[NSColor colorWithCalibratedWhite:OVERLAY_WHITE_VALUE alpha:(_fractionFadedIn * OVERLAY_MAX_ALPHA)] set];
     78    NSRectFill(rect);
     79
     80    // determine set of holes
     81    NSArray *holes = [self _holes];
     82    int holeCount = [holes count];
     83    int holeIndex;
     84
     85    // Draw white frames around holes in first pass, so they will be erased in
     86    // places where holes overlap or abut.
     87    [[NSColor colorWithCalibratedWhite:1.0 alpha:_fractionFadedIn] set];
     88
     89    // white frame is just outside of the hole that the delegate returned
     90    for (holeIndex = 0; holeIndex < holeCount; ++holeIndex) {
     91        NSRect hole = [[holes objectAtIndex:holeIndex] rectValue];
     92        hole = NSInsetRect(hole, -WHITE_FRAME_THICKNESS, -WHITE_FRAME_THICKNESS);
     93        NSRectFill(hole);
     94    }
     95
     96    [[NSColor clearColor] set];
     97
     98    // Erase holes in second pass.
     99    for (holeIndex = 0; holeIndex < holeCount; ++holeIndex)
     100        NSRectFill([[holes objectAtIndex:holeIndex] rectValue]);
     101
     102    [NSGraphicsContext restoreGraphicsState];
    183103}
     104
     105- (WebNodeHighlight *)webNodeHighlight
     106{
     107    return _webNodeHighlight;
     108}
     109
     110- (float)fractionFadedIn
     111{
     112    return _fractionFadedIn;
     113}
     114
     115- (void)setFractionFadedIn:(float)fraction
     116{
     117    ASSERT_ARG(fraction, fraction >= 0.0 && fraction <= 1.0);
     118
     119    if (_fractionFadedIn == fraction)
     120        return;
     121   
     122    _fractionFadedIn = fraction;
     123    [self setNeedsDisplay:YES];
     124}
     125
     126- (void)setHolesNeedUpdateInRect:(NSRect)rect
     127{
     128    // Redisplay a slightly larger rect to account for white border around holes
     129    rect = NSInsetRect(rect, -1 * WHITE_FRAME_THICKNESS,
     130                             -1 * WHITE_FRAME_THICKNESS);
     131
     132    [self setNeedsDisplayInRect:rect];
     133}
     134
    184135@end
     136
     137@implementation WebNodeHighlightView (FileInternal)
     138
     139- (NSArray *)_holes
     140{
     141    DOMNode *node = [_webNodeHighlight highlightedNode];
     142
     143    // FIXME: node view needs to be the correct frame document view, it isn't always the main frame
     144    NSView *nodeView = [_webNodeHighlight targetView];
     145
     146    NSArray *lineBoxRects = nil;
     147    if ([node isKindOfClass:[DOMElement class]]) {
     148        DOMCSSStyleDeclaration *style = [[node ownerDocument] getComputedStyle:(DOMElement *)node pseudoElement:@""];
     149        if ([[style getPropertyValue:@"display"] isEqualToString:@"inline"])
     150            lineBoxRects = [node lineBoxRects];
     151    } else if ([node isKindOfClass:[DOMText class]]) {
     152#if ENABLE(SVG)
     153        if (![[node parentNode] isKindOfClass:NSClassFromString(@"DOMSVGElement")])
     154#endif
     155            lineBoxRects = [node lineBoxRects];
     156    }
     157
     158    if (![lineBoxRects count]) {
     159        NSRect boundingBox = [nodeView _web_convertRect:[node boundingBox] toView:self];
     160        return [NSArray arrayWithObject:[NSValue valueWithRect:boundingBox]];
     161    }
     162
     163    NSMutableArray *rects = [[NSMutableArray alloc] initWithCapacity:[lineBoxRects count]];
     164
     165    unsigned lineBoxRectCount = [lineBoxRects count];
     166    for (unsigned lineBoxRectIndex = 0; lineBoxRectIndex < lineBoxRectCount; ++lineBoxRectIndex) {
     167        NSRect r = [[lineBoxRects objectAtIndex:lineBoxRectIndex] rectValue];
     168        NSRect overlayViewRect = [nodeView _web_convertRect:r toView:self];
     169        [rects addObject:[NSValue valueWithRect:overlayViewRect]];
     170    }
     171
     172    return [rects autorelease];
     173}
     174
     175@end
  • trunk/WebKit/WebKit.exp

    r21073 r23677  
    1717.objc_class_name_WebHistoryItem
    1818.objc_class_name_WebIconDatabase
    19 .objc_class_name_WebInspector
    2019.objc_class_name_WebJavaScriptTextInputPanel
    2120.objc_class_name_WebKeyGenerator
  • trunk/WebKit/WebKit.xcodeproj/project.pbxproj

    r23627 r23677  
    1010                065AD5A30B0C32C7005A2B1D /* WebContextMenuClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 065AD5A10B0C32C7005A2B1D /* WebContextMenuClient.h */; };
    1111                065AD5A40B0C32C7005A2B1D /* WebContextMenuClient.mm in Sources */ = {isa = PBXBuildFile; fileRef = 065AD5A20B0C32C7005A2B1D /* WebContextMenuClient.mm */; };
     12                06693DDC0BFBA85200216072 /* WebInspectorClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 06693DDA0BFBA85200216072 /* WebInspectorClient.h */; };
     13                06693DDD0BFBA85200216072 /* WebInspectorClient.mm in Sources */ = {isa = PBXBuildFile; fileRef = 06693DDB0BFBA85200216072 /* WebInspectorClient.mm */; };
    1214                14D8252F0AF955090004F057 /* WebChromeClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 14D8252D0AF955090004F057 /* WebChromeClient.h */; };
    1315                14D825300AF955090004F057 /* WebChromeClient.mm in Sources */ = {isa = PBXBuildFile; fileRef = 14D8252E0AF955090004F057 /* WebChromeClient.mm */; };
     
    1719                1C0D40870AC1C8F40009C113 /* WebKitVersionChecks.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C0D40850AC1C8F40009C113 /* WebKitVersionChecks.h */; };
    1820                1C0D40880AC1C8F40009C113 /* WebKitVersionChecks.m in Sources */ = {isa = PBXBuildFile; fileRef = 1C0D40860AC1C8F40009C113 /* WebKitVersionChecks.m */; };
    19                 1C68F667095B5FC100C2984E /* webInspector in Resources */ = {isa = PBXBuildFile; fileRef = 1C68F640095B5FC100C2984E /* webInspector */; };
    20                 1C68F668095B5FC100C2984E /* WebInspector.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C68F65C095B5FC100C2984E /* WebInspector.h */; settings = {ATTRIBUTES = (Private, ); }; };
    21                 1C68F669095B5FC100C2984E /* WebInspector.m in Sources */ = {isa = PBXBuildFile; fileRef = 1C68F65D095B5FC100C2984E /* WebInspector.m */; };
    22                 1C68F66A095B5FC100C2984E /* WebInspectorInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C68F65E095B5FC100C2984E /* WebInspectorInternal.h */; };
    23                 1C68F66D095B5FC100C2984E /* WebInspectorPanel.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C68F661095B5FC100C2984E /* WebInspectorPanel.h */; };
    24                 1C68F66E095B5FC100C2984E /* WebInspectorPanel.m in Sources */ = {isa = PBXBuildFile; fileRef = 1C68F662095B5FC100C2984E /* WebInspectorPanel.m */; };
    2521                1C68F66F095B5FC100C2984E /* WebNodeHighlight.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C68F663095B5FC100C2984E /* WebNodeHighlight.h */; };
    2622                1C68F670095B5FC100C2984E /* WebNodeHighlight.m in Sources */ = {isa = PBXBuildFile; fileRef = 1C68F664095B5FC100C2984E /* WebNodeHighlight.m */; };
     
    311307                065AD5A10B0C32C7005A2B1D /* WebContextMenuClient.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = WebContextMenuClient.h; sourceTree = "<group>"; };
    312308                065AD5A20B0C32C7005A2B1D /* WebContextMenuClient.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = WebContextMenuClient.mm; sourceTree = "<group>"; };
     309                06693DDA0BFBA85200216072 /* WebInspectorClient.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = WebInspectorClient.h; sourceTree = "<group>"; };
     310                06693DDB0BFBA85200216072 /* WebInspectorClient.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = WebInspectorClient.mm; sourceTree = "<group>"; };
    313311                14D8252D0AF955090004F057 /* WebChromeClient.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = WebChromeClient.h; sourceTree = "<group>"; };
    314312                14D8252E0AF955090004F057 /* WebChromeClient.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = WebChromeClient.mm; sourceTree = "<group>"; };
     
    318316                1C0D40850AC1C8F40009C113 /* WebKitVersionChecks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebKitVersionChecks.h; sourceTree = "<group>"; };
    319317                1C0D40860AC1C8F40009C113 /* WebKitVersionChecks.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WebKitVersionChecks.m; sourceTree = "<group>"; };
    320                 1C68F640095B5FC100C2984E /* webInspector */ = {isa = PBXFileReference; lastKnownFileType = folder; name = webInspector; path = WebInspector/webInspector; sourceTree = SOURCE_ROOT; };
    321                 1C68F65C095B5FC100C2984E /* WebInspector.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebInspector.h; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
    322                 1C68F65D095B5FC100C2984E /* WebInspector.m */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.objc; path = WebInspector.m; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
    323                 1C68F65E095B5FC100C2984E /* WebInspectorInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebInspectorInternal.h; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
    324                 1C68F661095B5FC100C2984E /* WebInspectorPanel.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebInspectorPanel.h; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
    325                 1C68F662095B5FC100C2984E /* WebInspectorPanel.m */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.objc; path = WebInspectorPanel.m; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
    326318                1C68F663095B5FC100C2984E /* WebNodeHighlight.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebNodeHighlight.h; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; wrapsLines = 0; };
    327319                1C68F664095B5FC100C2984E /* WebNodeHighlight.m */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.objc; path = WebNodeHighlight.m; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
     
    697689                        isa = PBXGroup;
    698690                        children = (
    699                                 1C68F640095B5FC100C2984E /* webInspector */,
    700                                 1C68F65C095B5FC100C2984E /* WebInspector.h */,
    701                                 1C68F65D095B5FC100C2984E /* WebInspector.m */,
    702                                 1C68F65E095B5FC100C2984E /* WebInspectorInternal.h */,
    703                                 1C68F661095B5FC100C2984E /* WebInspectorPanel.h */,
    704                                 1C68F662095B5FC100C2984E /* WebInspectorPanel.m */,
    705691                                1C68F663095B5FC100C2984E /* WebNodeHighlight.h */,
    706692                                1C68F664095B5FC100C2984E /* WebNodeHighlight.m */,
     
    910896                                F52CA6BD02DF9D0F018635CA /* HTML */,
    911897                                51E94C0706C02CA300A9B09E /* PDF */,
    912                                 656D333D0AF21AE900212169 /* WebResourceLoadDelegatePrivate.h */,
    913898                                8373435A0624EE0D00F3B289 /* WebArchive.h */,
    914899                                6550B7C5099EFAE90090D781 /* WebArchiver.h */,
     
    943928                                84311AF105EAB12B0088EDA4 /* WebResourcePrivate.h */,
    944929                                513D422E034CF55A00CA2ACD /* WebResourceLoadDelegate.h */,
     930                                656D333D0AF21AE900212169 /* WebResourceLoadDelegatePrivate.h */,
    945931                                7E6FEF0508985A7200C44C3F /* WebScriptDebugDelegate.h */,
    946932                                7E6FEF0708985A7200C44C3F /* WebScriptDebugDelegatePrivate.h */,
     
    10301016                                931633EE0AEDFFAE0062B92D /* WebFrameLoaderClient.mm */,
    10311017                                9CE1F8A302A5C6F30ECA2ACD /* WebImageRendererFactory.m */,
     1018                                06693DDA0BFBA85200216072 /* WebInspectorClient.h */,
     1019                                06693DDB0BFBA85200216072 /* WebInspectorClient.mm */,
    10321020                                9345D4EA0365C5B2008635CE /* WebJavaScriptTextInputPanel.h */,
    10331021                                9345D4EB0365C5B2008635CE /* WebJavaScriptTextInputPanel.m */,
     
    12531241                                ABDDF20D08EB0DDC001E1241 /* WebDownloadInternal.h in Headers */,
    12541242                                224100F3091818D900D2D266 /* WebPluginsPrivate.h in Headers */,
    1255                                 1C68F668095B5FC100C2984E /* WebInspector.h in Headers */,
    1256                                 1C68F66A095B5FC100C2984E /* WebInspectorInternal.h in Headers */,
    1257                                 1C68F66D095B5FC100C2984E /* WebInspectorPanel.h in Headers */,
    12581243                                1C68F66F095B5FC100C2984E /* WebNodeHighlight.h in Headers */,
    12591244                                1C68F671095B5FC100C2984E /* WebNodeHighlightView.h in Headers */,
     
    12871272                                EDE983800BCDF5FE00FDAE28 /* WebNSArrayExtras.h in Headers */,
    12881273                                5DE92FEF0BD7017E0059A5FD /* WebAssertions.h in Headers */,
     1274                                06693DDC0BFBA85200216072 /* WebInspectorClient.h in Headers */,
    12891275                                BCDFA8F90C10B6F500D3A10C /* WebKitPluginContainerView.h in Headers */,
    12901276                        );
     
    13571343                                939810B90824BF01008DF038 /* WebViewEditingContextMenu.nib in Resources */,
    13581344                                939810BA0824BF01008DF038 /* IDNScriptWhiteList.txt in Resources */,
    1359                                 1C68F667095B5FC100C2984E /* webInspector in Resources */,
    13601345                                EDD6132C0AED9990000B75CA /* WebViewEditingContextMenuOld.nib in Resources */,
    13611346                        );
     
    15111496                                7E6FEF0908985A7200C44C3F /* WebScriptDebugDelegate.mm in Sources */,
    15121497                                224100F90918190100D2D266 /* WebPluginsPrivate.m in Sources */,
    1513                                 1C68F669095B5FC100C2984E /* WebInspector.m in Sources */,
    1514                                 1C68F66E095B5FC100C2984E /* WebInspectorPanel.m in Sources */,
    15151498                                1C68F670095B5FC100C2984E /* WebNodeHighlight.m in Sources */,
    15161499                                1C68F672095B5FC100C2984E /* WebNodeHighlightView.m in Sources */,
     
    15331516                                A7D3C5BD0B5773C5002CA450 /* WebPasteboardHelper.mm in Sources */,
    15341517                                EDE983810BCDF5FE00FDAE28 /* WebNSArrayExtras.m in Sources */,
     1518                                06693DDD0BFBA85200216072 /* WebInspectorClient.mm in Sources */,
    15351519                                BCDFA9130C10B93E00D3A10C /* WebKitPluginContainerView.mm in Sources */,
    15361520                        );
  • trunk/WebKit/WebView/WebFrame.mm

    r21793 r23677  
    138138   
    139139    [scriptDebugger release];
    140    
    141     [inspectors release];
    142140
    143141    [super dealloc];
     
    539537}
    540538
    541 - (void)_addInspector:(WebInspector *)inspector
    542 {
    543     if (!_private->inspectors)
    544         _private->inspectors = [[NSMutableSet alloc] init];
    545     ASSERT(![_private->inspectors containsObject:inspector]);
    546     [_private->inspectors addObject:inspector];
    547 }
    548 
    549 - (void)_removeInspector:(WebInspector *)inspector
    550 {
    551     ASSERT([_private->inspectors containsObject:inspector]);
    552     [_private->inspectors removeObject:inspector];
    553 }
    554 
    555539- (FrameLoader*)_frameLoader
    556540{
  • trunk/WebKit/WebView/WebFrameInternal.h

    r21618 r23677  
    4141@class DOMNode;
    4242@class DOMRange;
    43 @class WebInspector;
    4443@class WebFrameView;
    4544@class WebFrameBridge;
     
    104103    WebScriptDebugger *scriptDebugger;
    105104    id internalLoadDelegate;
    106    
    107     NSMutableSet *inspectors;
    108105}
    109106@end
     
    134131
    135132- (BOOL)_isMainFrame;
    136 
    137 - (void)_addInspector:(WebInspector *)inspector;
    138 - (void)_removeInspector:(WebInspector *)inspector;
    139133
    140134#ifdef __cplusplus
  • trunk/WebKit/WebView/WebHTMLView.mm

    r23559 r23677  
    25582558    }
    25592559
    2560     // Add the Inspect Element menu item if the preference is set or if this is a debug build
    2561     if ([WebView _developerExtrasEnabled]) {
    2562         if (!menu)
    2563             menu = [[[NSMenu alloc] init] autorelease];
    2564         else if ([menu numberOfItems])
    2565             [menu addItem:[NSMenuItem separatorItem]];
    2566         NSMenuItem *inspectorItem = [[NSMenuItem alloc] init];
    2567         [inspectorItem setAction:@selector(_inspectElement:)];
    2568         [inspectorItem setTitle:UI_STRING("Inspect Element", "Inspect Element context menu item")];
    2569         [inspectorItem setRepresentedObject:[[[WebElementDictionary alloc] initWithHitTestResult:
    2570             coreMenu->hitTestResult()] autorelease]];
    2571         [menu addItem:inspectorItem];
    2572         [inspectorItem release];
    2573     }
    2574 
    25752560    return menu;
    25762561}
  • trunk/WebKit/WebView/WebUIDelegatePrivate.h

    r21576 r23677  
    6464    WebMenuItemPDFSinglePageScrolling,
    6565    WebMenuItemPDFFacingPagesScrolling,
     66    WebMenuItemTagInspectElement,
    6667    WebMenuItemTagBaseApplication = 10000
    6768};
  • trunk/WebKit/WebView/WebView.mm

    r23586 r23677  
    5959#import "WebHistoryItemInternal.h"
    6060#import "WebIconDatabase.h"
    61 #import "WebInspector.h"
     61#import "WebInspectorClient.h"
    6262#import "WebKitErrors.h"
    6363#import "WebKitLogging.h"
     
    276276    id scriptDebugDelegate;
    277277    id scriptDebugDelegateForwarder;
    278    
     278
    279279    BOOL allowsUndo;
    280280       
     
    449449    [preferences release];
    450450    [hostWindow release];
    451    
     451
    452452    [policyDelegateForwarder release];
    453453    [UIDelegateForwarder release];
     
    644644{
    645645    return WKGetPreferredExtensionForMIMEType(type);
     646}
     647
     648- (BOOL)_isClosed
     649{
     650    if (!_private || _private->closed)
     651        return YES;
     652    return NO;
    646653}
    647654
     
    11911198        [self _willChangeValueForKey: _WebMainFrameURLKey];
    11921199    }
     1200
    11931201    [NSApp setWindowsNeedUpdate:YES];
    11941202}
     
    11961204- (void)_didCommitLoadForFrame:(WebFrame *)frame
    11971205{
    1198     if (frame == [self mainFrame]){
     1206    if (frame == [self mainFrame])
    11991207        [self _didChangeValueForKey: _WebMainFrameURLKey];
    1200     }
    12011208    [NSApp setWindowsNeedUpdate:YES];
    12021209}
     
    17521759
    17531760    _private->page = new Page(new WebChromeClient(self), new WebContextMenuClient(self), new WebEditorClient(self), new WebDragClient(self));
     1761    if ([WebView _developerExtrasEnabled])
     1762        _private->page->setInspectorClient(new WebInspectorClient(self));
    17541763    [[[WebFrameBridge alloc] initMainFrameWithPage:_private->page frameName:frameName frameView:frameView] release];
    17551764
     
    20272036}
    20282037
    2029 
    20302038- resourceLoadDelegate
    20312039{
     
    25692577{
    25702578    return _private->drawsBackground;
    2571 }
    2572 
    2573 - (void)_inspectElement:(id)sender
    2574 {
    2575     NSDictionary *element = [sender representedObject];
    2576     WebFrame *frame = [element objectForKey:WebElementFrameKey];
    2577     DOMNode *node = [element objectForKey:WebElementDOMNodeKey];
    2578     if (!node || !frame)
    2579         return;
    2580 
    2581     if ([node nodeType] != DOM_ELEMENT_NODE || [node nodeType] != DOM_DOCUMENT_NODE)
    2582         node = [node parentNode];
    2583 
    2584     WebInspector *inspector = [WebInspector sharedWebInspector];
    2585     [inspector setWebFrame:frame];
    2586     [inspector setFocusedDOMNode:node];
    2587 
    2588     node = [node parentNode];
    2589     node = [node parentNode];
    2590     if (node) // set the root node to something relatively close to the focused node
    2591         [inspector setRootDOMNode:node];
    2592 
    2593     [inspector showWindow:nil];
    25942579}
    25952580
  • trunk/WebKit/WebView/WebViewPrivate.h

    r22074 r23677  
    289289- (id<WebFormDelegate>)_formDelegate;
    290290
     291- (BOOL)_isClosed;
    291292- (void)_close;
    292293
  • trunk/WebKit/win/ChangeLog

    r23623 r23677  
     12007-06-20  Adam Roben  <aroben@apple.com>
     2
     3        Land the new Inspector.
     4
     5        Co-written with Tim Hatcher.
     6
     7        Reviewed by Anders, Adele, Hyatt, and Sam.
     8
     9        Implement the InspectorClient interface.
     10
     11        * WebInspectorClient.cpp: Added.
     12        (WebInspectorClient::WebInspectorClient):
     13        (WebInspectorClient::~WebInspectorClient):
     14        (WebInspectorClient::inspectorDestroyed):
     15        (WebInspectorClient::createPage):
     16        (WebInspectorClient::showWindow):
     17        (WebInspectorClient::closeWindow):
     18        (WebInspectorClient::windowVisible):
     19        (WebInspectorClient::attachWindow):
     20        (WebInspectorClient::detachWindow):
     21        (WebInspectorClient::highlight):
     22        (WebInspectorClient::hideHighlight):
     23        (WebInspectorClient::inspectedURLChanged):
     24        (WebInspectorClient::updateWindowTitle):
     25        (WebInspectorClient::onSize):
     26        (WebInspectorClient::onClose):
     27        (WebInspectorClient::onWebViewWindowPosChanging):
     28        (WebInspectorWndProc):
     29        (SubclassedWebViewWndProc):
     30        (registerWindowClass):
     31        * WebInspectorClient.h: Added.
     32
     33        Add an easier-to-see highlight.
     34
     35        * WebNodeHighlight.cpp: Added.
     36        (WebNodeHighlight::WebNodeHighlight):
     37        (WebNodeHighlight::~WebNodeHighlight):
     38        (WebNodeHighlight::highlight):
     39        (WebNodeHighlight::hide):
     40        (WebNodeHighlight::visible):
     41        (WebNodeHighlight::updateWindow):
     42        (WebNodeHighlight::removeSubclass):
     43        (registerOverlayClass):
     44        (OverlayWndProc):
     45        (SubclassedWndProc):
     46        * WebNodeHighlight.h: Added.
     47
     48        WebView changes needed for the new Inspector.
     49
     50        * WebView.cpp: Removed old inspectElement method now that this is
     51        handled by WebCore.
     52        (WebView::WebView):
     53        (WebView::close):
     54        (WebView::performContextMenuAction): Removed handling of the Inspect
     55        Element context menu item.
     56        (WebView::initWithFrame): Give each Page an InspectorClient to enable
     57        the Inspector.
     58        (WebView::setProhibitsMainFrameScrolling): Added.
     59        * WebView.h:
     60
     61        Updates needed for WebCore changes.
     62
     63        * Interfaces/IWebUIDelegate.idl:
     64        * WebContextMenuClient.cpp:
     65        (WebContextMenuClient::getCustomMenuFromDefaultItems):
     66        * WebContextMenuClient.h:
     67        * WebCoreLocalizedStrings.cpp:
     68
     69        Remove old Inspector code.
     70
     71        * WebFrame.cpp:
     72        * WebFrame.h:
     73        * WebInspector/WebInspector.cpp: Removed.
     74        * WebInspector/WebInspector.h: Removed.
     75        * WebInspector/webInspector/Images/button.png: Removed.
     76        * WebInspector/webInspector/Images/buttonDivider.png: Removed.
     77        * WebInspector/webInspector/Images/buttonPressed.png: Removed.
     78        * WebInspector/webInspector/Images/close.png: Removed.
     79        * WebInspector/webInspector/Images/closePressed.png: Removed.
     80        * WebInspector/webInspector/Images/downTriangle.png: Removed.
     81        * WebInspector/webInspector/Images/menu.png: Removed.
     82        * WebInspector/webInspector/Images/menuPressed.png: Removed.
     83        * WebInspector/webInspector/Images/popup.png: Removed.
     84        * WebInspector/webInspector/Images/popupPressed.png: Removed.
     85        * WebInspector/webInspector/Images/resize.png: Removed.
     86        * WebInspector/webInspector/Images/rightTriangle.png: Removed.
     87        * WebInspector/webInspector/Images/scrollThumbBottom.png: Removed.
     88        * WebInspector/webInspector/Images/scrollThumbMiddle.png: Removed.
     89        * WebInspector/webInspector/Images/scrollTrackMiddle.png: Removed.
     90        * WebInspector/webInspector/Images/upTriangle.png: Removed.
     91        * WebInspector/webInspector/inspector.css: Removed.
     92        * WebInspector/webInspector/inspector.html: Removed.
     93        * WebInspector/webInspector/inspector.js: Removed.
     94        * WebInspector/webInspector/scrollarea.js: Removed.
     95        * WebInspector/webInspector/scrollbar.js: Removed.
     96        * WebInspector/webInspector/treeoutline.js: Removed.
     97        * WebInspector/webInspector/utilities.js: Removed.
     98
     99        Build-fu:
     100
     101        * WebKit.vcproj/WebKit.vcproj:
     102
    11032007-06-19  Dave Hyatt  <hyatt@apple.com>
    2104
  • trunk/WebKit/win/Interfaces/IWebUIDelegate.idl

    r23357 r23677  
    123123    WebMenuItemTagPDFSinglePageScrolling,
    124124    WebMenuItemTagPDFFacingPagesScrolling,
    125     // WebMenuItemTagInspectElement is only known to WebKit
    126     WebMenuItemTagInspectElement=9999,
     125    WebMenuItemTagInspectElement,
    127126    WebMenuItemBaseApplicationTag=10000
    128127} WebMenuItemTag;
  • trunk/WebKit/win/WebContextMenuClient.cpp

    r23457 r23677  
    5959    COMPtr<IWebUIDelegate> uiDelegate;
    6060    if (FAILED(m_webView->uiDelegate(&uiDelegate)))
    61         return 0;
     61        return menu->platformDescription();
    6262
    6363    ASSERT(uiDelegate);
     
    6868    // FIXME: We need to decide whether to do the default before calling this delegate method
    6969    if (FAILED(uiDelegate->contextMenuItemsForElement(m_webView, propertyBag.get(), (OLE_HANDLE)(ULONG64)menu->platformDescription(), (OLE_HANDLE*)&newMenu)))
    70         newMenu = menu->platformDescription();
    71 
    72     // FIXME: Only do this if m_webView->developerExtrasEnabled()
    73     if (::GetMenuItemCount(newMenu) > 0) {
    74         MENUITEMINFO separator = {0};
    75         separator.cbSize = sizeof(separator);
    76         separator.fMask = MIIM_FTYPE;
    77         separator.fType = MFT_SEPARATOR;
    78         ::InsertMenuItem(newMenu, (UINT)-1, TRUE, &separator);
    79     }
    80 
    81     MENUITEMINFO info = {0};
    82     info.cbSize = sizeof(info);
    83     info.fMask = MIIM_FTYPE | MIIM_STRING | MIIM_ID;
    84     info.fType = MFT_STRING;
    85     info.dwTypeData = _tcsdup(LPCTSTR_UI_STRING("Inspect Element", "Inspect Element context menu item"));
    86     info.wID = WebMenuItemTagInspectElement;
    87 
    88     ::InsertMenuItem(newMenu, (UINT)-1, TRUE, &info);
     70        return menu->platformDescription();
    8971
    9072    return newMenu;
     
    154136    notImplemented();
    155137}
     138
     139bool WebContextMenuClient::shouldIncludeInspectElementItem()
     140{
     141    notImplemented();
     142    return true;
     143}
  • trunk/WebKit/win/WebContextMenuClient.h

    r23455 r23677  
    4646    virtual void speak(const WebCore::String&);
    4747    virtual void stopSpeaking();
     48    virtual bool shouldIncludeInspectElementItem();
    4849
    4950private:
  • trunk/WebKit/win/WebCoreLocalizedStrings.cpp

    r23376 r23677  
    7272String WebCore::contextMenuItemTagRightToLeft() { return String(LPCTSTR_UI_STRING("Right to Left", "Right to Left context menu item")); }
    7373String WebCore::contextMenuItemTagShowSpellingPanel(bool show) { return String(show ? LPCTSTR_UI_STRING("Show Spelling and Grammar", "menu item title") : LPCTSTR_UI_STRING("Hide Spelling and Grammar", "menu item title")); }
     74String WebCore::contextMenuItemTagInspectElement() { return String(LPCTSTR_UI_STRING("Inspect Element", "Inspect Element context menu item")); }
    7475String WebCore::searchMenuNoRecentSearchesText() { return String(LPCTSTR_UI_STRING("No recent searches", "Label for only item in menu that appears when clicking on the search field image, when no searches have been performed")); }
    7576String WebCore::searchMenuRecentSearchesText() { return String(LPCTSTR_UI_STRING("Recent Searches", "label for first item in the menu that appears when clicking on the search field image, used as embedded menu title")); }
  • trunk/WebKit/win/WebFrame.cpp

    r23423 r23677  
    21012101}
    21022102
    2103 bool WebFrame::dispatchDidLoadResourceFromMemoryCache(DocumentLoader*, const ResourceRequest&, const ResourceResponse&, int)
     2103bool WebFrame::dispatchDidLoadResourceFromMemoryCache(DocumentLoader*, const ResourceRequest&, const ResourceResponse&, int /*length*/)
    21042104{
    21052105    notImplemented();
     
    25372537}
    25382538
    2539 void WebFrame::addInspector(WebInspector*)
    2540 {
    2541     notImplemented();
    2542 }
    2543 
    2544 void WebFrame::removeInspector(WebInspector*)
    2545 {
    2546     notImplemented();
    2547 }
    2548 
    25492539HRESULT STDMETHODCALLTYPE WebFrame::isFrameSet(
    25502540    /* [retval][out] */ BOOL* result)
  • trunk/WebKit/win/WebFrame.h

    r23411 r23677  
    6262class WebFramePolicyListener;
    6363class WebHistory;
    64 class WebInspector;
    6564class WebView;
    6665
     
    322321    void invalidate();
    323322    void receivedData(const char*, int, const WebCore::String&);
    324     void addInspector(WebInspector*);
    325     void removeInspector(WebInspector*);
    326323    void unmarkAllMisspellings();
    327324    void unmarkAllBadGrammar();
  • trunk/WebKit/win/WebInspectorClient.h

    r23676 r23677  
    2727 */
    2828
    29 // This header contains WebInspector declarations that can be used anywhere in the Web Kit, but are neither SPI nor API.
     29#ifndef WebInspectorClient_h
     30#define WebInspectorClient_h
    3031
    31 #import <Foundation/NSObject.h>
    32 #import <WebKit/WebInspector.h>
    33 #import <WebKit/DOMNode.h>
     32#include <WebCore/COMPtr.h>
     33#include <WebCore/InspectorClient.h>
     34#include <WebCore/PlatformString.h>
     35#include <wtf/OwnPtr.h>
     36#include <windows.h>
    3437
    35 @class DOMHTMLDocument;
    36 @class WebView;
    37 @class WebFrame;
    38 @class WebNodeHighlight;
     38class WebNodeHighlight;
     39class WebView;
    3940
    40 @interface WebInspectorPrivate : NSObject
    41 {
    42 @public
    43     WebView *webView;
    44     WebFrame *inspectedWebFrame;
    45     WebNodeHighlight *currentHighlight;
    46 #ifndef NDEBUG
    47     NSMutableDictionary *debugFileMap;
    48 #endif
    49     BOOL webViewLoaded;
    50     BOOL preventHighlight;
    51 }
    52 @end
     41class WebInspectorClient : public WebCore::InspectorClient {
     42public:
     43    WebInspectorClient(WebView*);
    5344
    54 @interface WebInspector (WebInspectorPrivate)
    55 - (void)_highlightNode:(DOMNode *)node;
    56 - (void)_updateSystemColors;
    57 @end
     45    // InspectorClient
     46    virtual void inspectorDestroyed();
     47
     48    virtual WebCore::Page* createPage();
     49    virtual void showWindow();
     50    virtual void closeWindow();
     51    virtual bool windowVisible();
     52
     53    virtual void attachWindow();
     54    virtual void detachWindow();
     55
     56    virtual void highlight(WebCore::Node*);
     57    virtual void hideHighlight();
     58
     59    virtual void inspectedURLChanged(const WebCore::String& newURL);
     60
     61private:
     62    ~WebInspectorClient();
     63
     64    void updateWindowTitle();
     65
     66    LRESULT onSize(WPARAM, LPARAM);
     67    LRESULT onClose(WPARAM, LPARAM);
     68
     69    void onWebViewWindowPosChanging(WPARAM, LPARAM);
     70
     71    WebView* m_inspectedWebView;
     72    HWND m_inspectedWebViewHwnd;
     73    HWND m_hwnd;
     74    COMPtr<WebView> m_webView;
     75    HWND m_webViewHwnd;
     76    WNDPROC m_originalWebViewWndProc;
     77
     78    bool m_attached;
     79
     80    OwnPtr<WebNodeHighlight> m_highlight;
     81
     82    WebCore::String m_inspectedURL;
     83
     84    static friend LRESULT CALLBACK WebInspectorWndProc(HWND, UINT, WPARAM, LPARAM);
     85    static friend LRESULT CALLBACK SubclassedWebViewWndProc(HWND, UINT, WPARAM, LPARAM);
     86};
     87
     88#endif // !defined(WebInspectorClient_h)
  • trunk/WebKit/win/WebKit.vcproj/WebKit.vcproj

    r23463 r23677  
    104104                        <Tool
    105105                                Name="VCPostBuildEventTool"
    106                                 CommandLine="mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebKit&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\WebLocalizableStrings.h&quot; &quot;$(WebKitOutputDir)\include\WebKit&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\WebKitGraphics.h&quot; &quot;$(WebKitOutputDir)\include\WebKit&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ProgIDMacros.h&quot; &quot;$(WebKitOutputDir)\include\WebKit&quot;&#x0D;&#x0A;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitOutputDir)\include\WebCore\npfunctions.h&quot; &quot;$(WebKitOutputDir)\include\WebKit&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitOutputDir)\include\JavaScriptCore\npapi.h&quot; &quot;$(WebKitOutputDir)\include\WebKit&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitOutputDir)\include\JavaScriptCore\npruntime.h&quot; &quot;$(WebKitOutputDir)\include\WebKit&quot;&#x0D;&#x0A;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(OutDir)\WebKit.resources&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\$(ProjectName).resources\*&quot; &quot;$(OutDir)\$(ProjectName).resources&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(OutDir)\WebKit.resources\webInspector\Images&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\WebInspector\webInspector\*&quot; &quot;$(OutDir)\$(ProjectName).resources\webInspector&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\WebInspector\webInspector\Images\*&quot; &quot;$(OutDir)\$(ProjectName).resources\webInspector\Images&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(OutDir)\WebKit.resources\en.lproj&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\English.lproj\Localizable.strings&quot; &quot;$(OutDir)\WebKit.resources\en.lproj\&quot;&#x0D;&#x0A;"
    107                         />
     106                                CommandLine="mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebKit&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\WebLocalizableStrings.h&quot; &quot;$(WebKitOutputDir)\include\WebKit&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\WebKitGraphics.h&quot; &quot;$(WebKitOutputDir)\include\WebKit&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ProgIDMacros.h&quot; &quot;$(WebKitOutputDir)\include\WebKit&quot;&#x0D;&#x0A;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitOutputDir)\include\WebCore\npfunctions.h&quot; &quot;$(WebKitOutputDir)\include\WebKit&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitOutputDir)\include\JavaScriptCore\npapi.h&quot; &quot;$(WebKitOutputDir)\include\WebKit&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitOutputDir)\include\JavaScriptCore\npruntime.h&quot; &quot;$(WebKitOutputDir)\include\WebKit&quot;&#x0D;&#x0A;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(OutDir)\WebKit.resources&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\$(ProjectName).resources\*&quot; &quot;$(OutDir)\$(ProjectName).resources&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(OutDir)\WebKit.resources\en.lproj&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\English.lproj\Localizable.strings&quot; &quot;$(OutDir)\WebKit.resources\en.lproj\&quot;&#x0D;&#x0A;"
     107                />
    108108                </Configuration>
    109109                <Configuration
     
    195195                        <Tool
    196196                                Name="VCPostBuildEventTool"
    197                                 CommandLine="mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebKit&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\WebLocalizableStrings.h&quot; &quot;$(WebKitOutputDir)\include\WebKit&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\WebKitGraphics.h&quot; &quot;$(WebKitOutputDir)\include\WebKit&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ProgIDMacros.h&quot; &quot;$(WebKitOutputDir)\include\WebKit&quot;&#x0D;&#x0A;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitOutputDir)\include\WebCore\npfunctions.h&quot; &quot;$(WebKitOutputDir)\include\WebKit&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitOutputDir)\include\JavaScriptCore\npapi.h&quot; &quot;$(WebKitOutputDir)\include\WebKit&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitOutputDir)\include\JavaScriptCore\npruntime.h&quot; &quot;$(WebKitOutputDir)\include\WebKit&quot;&#x0D;&#x0A;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(OutDir)\WebKit.resources&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\$(ProjectName).resources\*&quot; &quot;$(OutDir)\$(ProjectName).resources&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(OutDir)\WebKit.resources\webInspector\Images&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\WebInspector\webInspector\*&quot; &quot;$(OutDir)\$(ProjectName).resources\webInspector&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\WebInspector\webInspector\Images\*&quot; &quot;$(OutDir)\$(ProjectName).resources\webInspector\Images&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(OutDir)\WebKit.resources\en.lproj&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\English.lproj\Localizable.strings&quot; &quot;$(OutDir)\WebKit.resources\en.lproj\&quot;&#x0D;&#x0A;"
     197                                CommandLine="mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebKit&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\WebLocalizableStrings.h&quot; &quot;$(WebKitOutputDir)\include\WebKit&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\WebKitGraphics.h&quot; &quot;$(WebKitOutputDir)\include\WebKit&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ProgIDMacros.h&quot; &quot;$(WebKitOutputDir)\include\WebKit&quot;&#x0D;&#x0A;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitOutputDir)\include\WebCore\npfunctions.h&quot; &quot;$(WebKitOutputDir)\include\WebKit&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitOutputDir)\include\JavaScriptCore\npapi.h&quot; &quot;$(WebKitOutputDir)\include\WebKit&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitOutputDir)\include\JavaScriptCore\npruntime.h&quot; &quot;$(WebKitOutputDir)\include\WebKit&quot;&#x0D;&#x0A;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(OutDir)\WebKit.resources&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\$(ProjectName).resources\*&quot; &quot;$(OutDir)\$(ProjectName).resources&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(OutDir)\WebKit.resources\en.lproj&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\English.lproj\Localizable.strings&quot; &quot;$(OutDir)\WebKit.resources\en.lproj\&quot;&#x0D;&#x0A;"
    198198                        />
    199199                </Configuration>
     
    286286                        <Tool
    287287                                Name="VCPostBuildEventTool"
    288                                 CommandLine="mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebKit&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\WebLocalizableStrings.h&quot; &quot;$(WebKitOutputDir)\include\WebKit&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\WebKitGraphics.h&quot; &quot;$(WebKitOutputDir)\include\WebKit&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ProgIDMacros.h&quot; &quot;$(WebKitOutputDir)\include\WebKit&quot;&#x0D;&#x0A;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitOutputDir)\include\WebCore\npfunctions.h&quot; &quot;$(WebKitOutputDir)\include\WebKit&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitOutputDir)\include\JavaScriptCore\npapi.h&quot; &quot;$(WebKitOutputDir)\include\WebKit&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitOutputDir)\include\JavaScriptCore\npruntime.h&quot; &quot;$(WebKitOutputDir)\include\WebKit&quot;&#x0D;&#x0A;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(OutDir)\WebKit.resources&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\$(ProjectName).resources\*&quot; &quot;$(OutDir)\$(ProjectName).resources&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(OutDir)\WebKit.resources\webInspector\Images&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\WebInspector\webInspector\*&quot; &quot;$(OutDir)\$(ProjectName).resources\webInspector&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\WebInspector\webInspector\Images\*&quot; &quot;$(OutDir)\$(ProjectName).resources\webInspector\Images&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(OutDir)\WebKit.resources\en.lproj&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\English.lproj\Localizable.strings&quot; &quot;$(OutDir)\WebKit.resources\en.lproj\&quot;&#x0D;&#x0A;"
     288                                CommandLine="mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\WebKit&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\WebLocalizableStrings.h&quot; &quot;$(WebKitOutputDir)\include\WebKit&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\WebKitGraphics.h&quot; &quot;$(WebKitOutputDir)\include\WebKit&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ProgIDMacros.h&quot; &quot;$(WebKitOutputDir)\include\WebKit&quot;&#x0D;&#x0A;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitOutputDir)\include\WebCore\npfunctions.h&quot; &quot;$(WebKitOutputDir)\include\WebKit&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitOutputDir)\include\JavaScriptCore\npapi.h&quot; &quot;$(WebKitOutputDir)\include\WebKit&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitOutputDir)\include\JavaScriptCore\npruntime.h&quot; &quot;$(WebKitOutputDir)\include\WebKit&quot;&#x0D;&#x0A;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(OutDir)\WebKit.resources&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\$(ProjectName).resources\*&quot; &quot;$(OutDir)\$(ProjectName).resources&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(OutDir)\WebKit.resources\en.lproj&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)..\English.lproj\Localizable.strings&quot; &quot;$(OutDir)\WebKit.resources\en.lproj\&quot;&#x0D;&#x0A;"
    289289                        />
    290290                </Configuration>
     
    307307                        </File>
    308308                        <File
     309                                RelativePath="..\WebInspectorClient.cpp"
     310                                >
     311                        </File>
     312                        <File
    309313                                RelativePath="..\WebKitClassFactory.cpp"
    310314                                >
     
    312316                        <File
    313317                                RelativePath="..\WebKitDLL.cpp"
     318                                >
     319                        </File>
     320                        <File
     321                                RelativePath="..\WebNodeHighlight.cpp"
    314322                                >
    315323                        </File>
     
    445453                        </File>
    446454                        <File
     455                                RelativePath="..\WebInspectorClient.h"
     456                                >
     457                        </File>
     458                        <File
    447459                                RelativePath="..\WebJavaScriptCollector.h"
    448460                                >
     
    478490                        <File
    479491                                RelativePath="..\WebMutableURLRequest.h"
     492                                >
     493                        </File>
     494                        <File
     495                                RelativePath="..\WebNodeHighlight.h"
    480496                                >
    481497                        </File>
     
    742758                        <File
    743759                                RelativePath="$(WebKitOutputDir)\include\JavaScriptCore\JavaScriptCore\JSStringRefCF.h"
    744                                 >
    745                         </File>
    746                 </Filter>
    747                 <Filter
    748                         Name="WebInspector"
    749                         >
    750                         <File
    751                                 RelativePath="..\WebInspector\WebInspector.cpp"
    752                                 >
    753                         </File>
    754                         <File
    755                                 RelativePath="..\WebInspector\WebInspector.h"
    756760                                >
    757761                        </File>
  • trunk/WebKit/win/WebNodeHighlight.h

    r23676 r23677  
    11/*
    2  * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
     2 * Copyright (C) 2007 Apple Inc.  All rights reserved.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    2727 */
    2828
    29 #import <AppKit/NSWindowController.h>
     29#ifndef WebNodeHighlight_h
     30#define WebNodeHighlight_h
    3031
    31 @class WebFrame;
    32 @class WebInspectorPrivate;
    33 @class DOMNode;
     32#pragma warning(push, 0)
     33#include <WebCore/IntRect.h>
     34#pragma warning(pop)
    3435
    35 @interface WebInspector : NSWindowController
    36 {
    37 @private
    38     WebInspectorPrivate *_private;
    39 }
    40 + (WebInspector *)sharedWebInspector;
     36#include <windows.h>
    4137
    42 - (id)initWithWebFrame:(WebFrame *)webFrame;
     38class WebNodeHighlight {
     39public:
     40    WebNodeHighlight(HWND webView);
     41    ~WebNodeHighlight();
    4342
    44 - (void)setWebFrame:(WebFrame *)webFrame;
    45 - (WebFrame *)webFrame;
     43    void highlight(const WebCore::IntRect&);
     44    void hide();
    4645
    47 - (void)setRootDOMNode:(DOMNode *)node;
    48 - (DOMNode *)rootDOMNode;
     46    void updateWindow();
     47    bool visible() const;
    4948
    50 - (void)setFocusedDOMNode:(DOMNode *)node;
    51 - (DOMNode *)focusedDOMNode;
    52 @end
     49private:
     50    void removeSubclass();
     51
     52    HWND m_webView;
     53    HWND m_subclassedWindow;
     54    HWND m_overlay;
     55
     56    WebCore::IntRect m_rect;
     57
     58    WNDPROC m_originalWndProc;
     59
     60    friend static LRESULT CALLBACK OverlayWndProc(HWND, UINT, WPARAM, LPARAM);
     61    friend static LRESULT CALLBACK SubclassedWndProc(HWND, UINT, WPARAM, LPARAM);
     62};
     63
     64#endif // !defined(WebNodeHighlight_h)
  • trunk/WebKit/win/WebView.cpp

    r23623 r23677  
    3939#include "WebContextMenuClient.h"
    4040#include "WebDragClient.h"
    41 #include "WebInspector/WebInspector.h"
     41#include "WebInspectorClient.h"
    4242#include "WebKit.h"
    4343#include "WebKitStatisticsPrivate.h"
     
    132132, m_hasSpellCheckerDocumentTag(false)
    133133, m_smartInsertDeleteEnabled(false)
     134, m_didClose(false)
    134135{
    135136    KJS::Collector::registerAsMainThread();
     
    179180void WebView::close()
    180181{
     182    if (m_didClose)
     183        return;
     184
     185    m_didClose = true;
     186
    181187    IWebNotificationCenter* notifyCenter = WebNotificationCenter::defaultCenterInternal();
    182188    COMPtr<IWebPreferences> prefs;
     
    734740    ContextMenu* menu = m_page->contextMenuController()->contextMenu();
    735741    ASSERT(menu);
    736     if (wParam == WebMenuItemTagInspectElement) {
    737         inspectElement(menu->hitTestResult());
    738         return;
    739     }
     742
    740743    ContextMenuItem* item = menu->itemWithAction((ContextMenuAction)wParam);
    741744    m_page->contextMenuController()->contextMenuItemSelected(item);
    742745    delete item;
    743 }
    744 
    745 void WebView::inspectElement(const HitTestResult& hitTestResult)
    746 {
    747     Node* node = hitTestResult.innerNonSharedNode();
    748     if (!node)
    749         return;
    750 
    751     WebFrame* frame = kit(node->document()->frame());
    752     if (!frame)
    753         return;
    754 
    755     if (node->nodeType() != Node::ELEMENT_NODE || node->nodeType() != Node::DOCUMENT_NODE)
    756         node = node->parentNode();
    757 
    758     COMPtr<IDOMNode> domNode;
    759     domNode.adoptRef(DOMNode::createInstance(node));
    760 
    761     WebInspector* inspector = WebInspector::sharedWebInspector();
    762     inspector->setWebFrame(frame);
    763     inspector->setFocusedDOMNode(domNode.get());
    764 
    765     if (node)
    766         node = node->parentNode();
    767     if (node)
    768         node = node->parentNode();
    769     if (node) {
    770         COMPtr<IDOMNode> domNode;
    771         domNode.adoptRef(DOMNode::createInstance(node));
    772         inspector->setRootDOMNode(domNode.get());
    773     }
    774 
    775     inspector->show();
    776746}
    777747
     
    17471717
    17481718    m_page = new Page(new WebChromeClient(this), new WebContextMenuClient(this), new WebEditorClient(this), new WebDragClient(this));
     1719    // FIXME: make this read a preference like the Mac's WebKitDeveloperExtras or when Safari's IncludeDebugMenu is set
     1720    if (true)
     1721        m_page->setInspectorClient(new WebInspectorClient(this));
    17491722    // FIXME: 4931464 - When we do cache pages on Windows this needs to be removed so the "should I cache this page?" check
    17501723    // in FrameLoader::provisionalLoadStarted() doesn't always fail
     
    35603533}
    35613534
     3535void WebView::setProhibitsMainFrameScrolling(bool b)
     3536{
     3537    m_page->mainFrame()->setProhibitsScrolling(b);
     3538}
     3539
    35623540class EnumTextMatches : public IEnumTextMatches
    35633541{
  • trunk/WebKit/win/WebView.h

    r23563 r23677  
    3535
    3636#include <WebCore/IntRect.h>
     37#include <wtf/OwnPtr.h>
    3738
    3839class WebFrame;
    3940class WebBackForwardList;
     41class WebInspectorClient;
    4042
    4143WebCore::Page* core(IWebView*);
     
    613615    bool onUninitMenuPopup(WPARAM, LPARAM);
    614616    void performContextMenuAction(WPARAM, LPARAM);
    615     void inspectElement(const WebCore::HitTestResult&);
    616617    bool mouseWheel(WPARAM, LPARAM, bool isHorizontal);
    617618    bool execCommand(WPARAM wParam, LPARAM lParam);
     
    632633    void closeWindow();
    633634    void close();
     635    bool didClose() const { return m_didClose; }
     636    void setProhibitsMainFrameScrolling(bool = true);
    634637
    635638    HRESULT registerDragDrop();
     
    694697    bool m_hasSpellCheckerDocumentTag;
    695698    bool m_smartInsertDeleteEnabled;
     699    bool m_didClose;
    696700
    697701    static bool s_allowSiteSpecificHacks;
Note: See TracChangeset for help on using the changeset viewer.