| Differences between
and this patch
- a/WebCore/ChangeLog +15 lines
Lines 1-3 a/WebCore/ChangeLog_sec1
1
2010-04-09  Pavel Feldman  <pfeldman@chromium.org>
2
3
        Reviewed by NOBODY (OOPS!).
4
5
        Web Inspector: Cannot select elements within iframes with the magnifying glass.
6
7
        https://bugs.webkit.org/show_bug.cgi?id=31732
8
9
        * inspector/InspectorController.cpp:
10
        (WebCore::InspectorController::inspect):
11
        (WebCore::InspectorController::handleMousePress):
12
        * inspector/InspectorController.h:
13
        * page/EventHandler.cpp:
14
        (WebCore::EventHandler::handleMousePressEvent):
15
1
2010-04-08  Pavel Feldman  <pfeldman@chromium.org>
16
2010-04-08  Pavel Feldman  <pfeldman@chromium.org>
2
17
3
        Reviewed by Yury Semikhatsky.
18
        Reviewed by Yury Semikhatsky.
- a/WebCore/inspector/InspectorController.cpp -16 / +5 lines
Lines 225-244 void InspectorController::setSetting(const String& key, const String& value) a/WebCore/inspector/InspectorController.cpp_sec1
225
    m_client->storeSetting(key, value);
225
    m_client->storeSetting(key, value);
226
}
226
}
227
227
228
// Trying to inspect something in a frame with JavaScript disabled would later lead to
229
// crashes trying to create JavaScript wrappers. Some day we could fix this issue, but
230
// for now prevent crashes here by never targeting a node in such a frame.
231
static bool canPassNodeToJavaScript(Node* node)
232
{
233
    if (!node)
234
        return false;
235
    Frame* frame = node->document()->frame();
236
    return frame && frame->script()->canExecuteScripts(NotAboutToExecuteScript);
237
}
238
239
void InspectorController::inspect(Node* node)
228
void InspectorController::inspect(Node* node)
240
{
229
{
241
    if (!canPassNodeToJavaScript(node) || !enabled())
230
    if (!enabled())
242
        return;
231
        return;
243
232
244
    show();
233
    show();
Lines 385-402 void InspectorController::mouseDidMoveOverElement(const HitTestResult& result, u a/WebCore/inspector/InspectorController.cpp_sec2
385
        highlight(node);
374
        highlight(node);
386
}
375
}
387
376
388
void InspectorController::handleMousePressOnNode(Node* node)
377
void InspectorController::handleMousePress()
389
{
378
{
390
    if (!enabled())
379
    if (!enabled())
391
        return;
380
        return;
392
381
393
    ASSERT(m_searchingForNode);
382
    ASSERT(m_searchingForNode);
394
    ASSERT(node);
383
    if (!m_highlightedNode)
395
    if (!node)
396
        return;
384
        return;
397
385
386
    RefPtr<Node> node = m_highlightedNode;
398
    setSearchingForNode(false);
387
    setSearchingForNode(false);
399
    inspect(node);
388
    inspect(node.get());
400
}
389
}
401
390
402
void InspectorController::setInspectorFrontendClient(PassOwnPtr<InspectorFrontendClient> client)
391
void InspectorController::setInspectorFrontendClient(PassOwnPtr<InspectorFrontendClient> client)
- a/WebCore/inspector/InspectorController.h -1 / +1 lines
Lines 143-149 public: a/WebCore/inspector/InspectorController.h_sec1
143
143
144
    bool searchingForNodeInPage() const { return m_searchingForNode; }
144
    bool searchingForNodeInPage() const { return m_searchingForNode; }
145
    void mouseDidMoveOverElement(const HitTestResult&, unsigned modifierFlags);
145
    void mouseDidMoveOverElement(const HitTestResult&, unsigned modifierFlags);
146
    void handleMousePressOnNode(Node*);
146
    void handleMousePress();
147
147
148
    void setInspectorFrontendClient(PassOwnPtr<InspectorFrontendClient> client);
148
    void setInspectorFrontendClient(PassOwnPtr<InspectorFrontendClient> client);
149
    bool hasInspectorFrontendClient() const { return m_inspectorFrontendClient; }
149
    bool hasInspectorFrontendClient() const { return m_inspectorFrontendClient; }
- a/WebCore/page/EventHandler.cpp -1 / +1 lines
Lines 1204-1210 bool EventHandler::handleMousePressEvent(const PlatformMouseEvent& mouseEvent) a/WebCore/page/EventHandler.cpp_sec1
1204
    if (Page* page = m_frame->page()) {
1204
    if (Page* page = m_frame->page()) {
1205
        InspectorController* inspector = page->inspectorController();
1205
        InspectorController* inspector = page->inspectorController();
1206
        if (inspector && inspector->enabled() && inspector->searchingForNodeInPage()) {
1206
        if (inspector && inspector->enabled() && inspector->searchingForNodeInPage()) {
1207
            inspector->handleMousePressOnNode(m_mousePressNode.get());
1207
            inspector->handleMousePress();
1208
            invalidateClick();
1208
            invalidateClick();
1209
            return true;
1209
            return true;
1210
        }
1210
        }

Return to Bug 31732