Changeset 73355 in webkit


Ignore:
Timestamp:
Dec 6, 2010 3:59:32 AM (13 years ago)
Author:
yurys@chromium.org
Message:

2010-12-06 Sheriff Bot <webkit.review.bot@gmail.com>

Unreviewed, rolling out r73351.
http://trac.webkit.org/changeset/73351
https://bugs.webkit.org/show_bug.cgi?id=50560

"The change broke plugin tests in Chromium" (Requested by
yurys on #webkit).

  • bindings/js/ScriptCallStackFactory.cpp: (WebCore::ScriptCallStack::stackTrace):
  • bindings/js/ScriptCallStackFactory.h:
  • bindings/v8/ScriptCallStackFactory.cpp: (WebCore::toScriptCallFrame): (WebCore::toScriptCallFramesVector): (WebCore::createScriptCallStack): (WebCore::ScriptCallStack::stackTrace):
  • bindings/v8/ScriptCallStackFactory.h:
  • bindings/v8/V8ConsoleMessage.cpp: (WebCore::V8ConsoleMessage::handler):
  • inspector/ScriptCallFrame.cpp: (WebCore::ScriptCallFrame::ScriptCallFrame): (WebCore::ScriptCallFrame::isEqual): (WebCore::ScriptCallFrame::buildInspectorObject):
  • inspector/ScriptCallFrame.h: (WebCore::ScriptCallFrame::sourceURL):
  • inspector/ScriptCallStack.h:
  • inspector/TimelineRecordFactory.cpp: (WebCore::TimelineRecordFactory::createGenericRecord):
  • inspector/front-end/ConsoleView.js: (WebInspector.ConsoleMessage.prototype._populateStackTraceTreeElement):
Location:
trunk/WebCore
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/ChangeLog

    r73352 r73355  
     12010-12-06  Sheriff Bot  <webkit.review.bot@gmail.com>
     2
     3        Unreviewed, rolling out r73351.
     4        http://trac.webkit.org/changeset/73351
     5        https://bugs.webkit.org/show_bug.cgi?id=50560
     6
     7        "The change broke plugin tests in Chromium" (Requested by
     8        yurys on #webkit).
     9
     10        * bindings/js/ScriptCallStackFactory.cpp:
     11        (WebCore::ScriptCallStack::stackTrace):
     12        * bindings/js/ScriptCallStackFactory.h:
     13        * bindings/v8/ScriptCallStackFactory.cpp:
     14        (WebCore::toScriptCallFrame):
     15        (WebCore::toScriptCallFramesVector):
     16        (WebCore::createScriptCallStack):
     17        (WebCore::ScriptCallStack::stackTrace):
     18        * bindings/v8/ScriptCallStackFactory.h:
     19        * bindings/v8/V8ConsoleMessage.cpp:
     20        (WebCore::V8ConsoleMessage::handler):
     21        * inspector/ScriptCallFrame.cpp:
     22        (WebCore::ScriptCallFrame::ScriptCallFrame):
     23        (WebCore::ScriptCallFrame::isEqual):
     24        (WebCore::ScriptCallFrame::buildInspectorObject):
     25        * inspector/ScriptCallFrame.h:
     26        (WebCore::ScriptCallFrame::sourceURL):
     27        * inspector/ScriptCallStack.h:
     28        * inspector/TimelineRecordFactory.cpp:
     29        (WebCore::TimelineRecordFactory::createGenericRecord):
     30        * inspector/front-end/ConsoleView.js:
     31        (WebInspector.ConsoleMessage.prototype._populateStackTraceTreeElement):
     32
    1332010-12-06  Robert Hogan  <robert@webkit.org>
    234
  • trunk/WebCore/bindings/js/ScriptCallStackFactory.cpp

    r73351 r73355  
    4949namespace WebCore {
    5050
    51 PassRefPtr<ScriptCallStack> createScriptCallStack(size_t)
    52 {
    53     return 0;
    54 }
    55 
    5651PassRefPtr<ScriptCallStack> createScriptCallStack(JSC::ExecState* exec, size_t maxStackSize)
    5752{
     
    9388}
    9489
     90bool ScriptCallStack::stackTrace(int, const RefPtr<InspectorArray>&)
     91{
     92    return false;
     93}
     94
    9595} // namespace WebCore
  • trunk/WebCore/bindings/js/ScriptCallStackFactory.h

    r73351 r73355  
    4343class ScriptCallStack;
    4444
    45 PassRefPtr<ScriptCallStack> createScriptCallStack(size_t maxStackSize);
    4645PassRefPtr<ScriptCallStack> createScriptCallStack(JSC::ExecState*, size_t maxStackSize);
    4746PassRefPtr<ScriptArguments> createScriptArguments(JSC::ExecState*, unsigned skipArgumentCount);
  • trunk/WebCore/bindings/v8/ScriptCallStackFactory.cpp

    r73351 r73355  
    5757
    5858    int sourceLineNumber = frame->GetLineNumber();
    59     int sourceColumn = frame->GetColumn();
    60     return ScriptCallFrame(functionName, sourceName, sourceLineNumber, sourceColumn);
     59    return ScriptCallFrame(functionName, sourceName, sourceLineNumber);
    6160}
    6261
    63 static void toScriptCallFramesVector(v8::Handle<v8::StackTrace> stackTrace, Vector<ScriptCallFrame>& scriptCallFrames, size_t maxStackSize)
     62static void toScriptCallFramesVector(v8::Local<v8::Context> context, v8::Handle<v8::StackTrace> stackTrace, Vector<ScriptCallFrame>& scriptCallFrames, size_t maxStackSize)
    6463{
    65     ASSERT(v8::Context::InContext());
     64    // TODO(yurys): remove this???
     65    v8::Context::Scope contextScope(context);
    6666    int frameCount = stackTrace->GetFrameCount();
    6767    if (frameCount > static_cast<int>(maxStackSize))
     
    7171        scriptCallFrames.append(toScriptCallFrame(stackFrame));
    7272    }
     73   
     74    if (!frameCount) {
     75        // Successfully grabbed stack trace, but there are no frames. It may happen in case of a syntax error for example.
     76        // Fallback to setting lineNumber to 0, and source and function name to "undefined".
     77        scriptCallFrames.append(ScriptCallFrame("undefined", "undefined", 0));
     78    }
    7379}
    7480
    75 PassRefPtr<ScriptCallStack> createScriptCallStack(v8::Handle<v8::StackTrace> stackTrace, size_t maxStackSize)
     81PassRefPtr<ScriptCallStack> createScriptCallStack(v8::Local<v8::Context> context, v8::Handle<v8::StackTrace> stackTrace, size_t maxStackSize)
    7682{
    77     ASSERT(v8::Context::InContext());
    7883    v8::HandleScope scope;
     84    v8::Context::Scope contextScope(context);
     85
    7986    Vector<ScriptCallFrame> scriptCallFrames;
    80     toScriptCallFramesVector(stackTrace, scriptCallFrames, maxStackSize);
     87    toScriptCallFramesVector(context, stackTrace, scriptCallFrames, maxStackSize);
    8188    return ScriptCallStack::create(scriptCallFrames);
    8289}
     
    8491PassRefPtr<ScriptCallStack> createScriptCallStack(size_t maxStackSize)
    8592{
    86     if (!v8::Context::InContext())
    87         return 0;
    88     v8::HandleScope handleScope;
     93    v8::HandleScope scope;
     94    v8::Local<v8::Context> context = v8::Context::GetCurrent();
     95    // TODO(yurys): remove?
     96    v8::Context::Scope contextScope(context);
    8997    v8::Handle<v8::StackTrace> stackTrace(v8::StackTrace::CurrentStackTrace(maxStackSize, stackTraceOptions));
    90     return createScriptCallStack(stackTrace, maxStackSize);
     98    return createScriptCallStack(context, stackTrace, maxStackSize);
    9199}
    92100
     
    104112}
    105113
     114bool ScriptCallStack::stackTrace(int frameLimit, const RefPtr<InspectorArray>& stackTrace)
     115{
     116#if ENABLE(INSPECTOR)
     117    if (!v8::Context::InContext())
     118        return false;
     119    v8::Handle<v8::Context> context = v8::Context::GetCurrent();
     120    if (context.IsEmpty())
     121        return false;
     122    v8::HandleScope scope;
     123    v8::Context::Scope contextScope(context);
     124    v8::Handle<v8::StackTrace> trace(v8::StackTrace::CurrentStackTrace(frameLimit));
     125    int frameCount = trace->GetFrameCount();
     126    if (trace.IsEmpty() || !frameCount)
     127        return false;
     128    for (int i = 0; i < frameCount; ++i) {
     129        v8::Handle<v8::StackFrame> frame = trace->GetFrame(i);
     130        RefPtr<InspectorObject> frameObject = InspectorObject::create();
     131        v8::Local<v8::String> scriptName = frame->GetScriptName();
     132        frameObject->setString("scriptName", scriptName.IsEmpty() ? "" : toWebCoreString(scriptName));
     133        v8::Local<v8::String> functionName = frame->GetFunctionName();
     134        frameObject->setString("functionName", functionName.IsEmpty() ? "" : toWebCoreString(functionName));
     135        frameObject->setNumber("lineNumber", frame->GetLineNumber());
     136        frameObject->setNumber("column", frame->GetColumn());
     137        stackTrace->pushObject(frameObject);
     138    }
     139    return true;
     140#else
     141    return false;
     142#endif
     143}
     144
    106145} // namespace WebCore
  • trunk/WebCore/bindings/v8/ScriptCallStackFactory.h

    r73351 r73355  
    4747    | v8::StackTrace::kFunctionName);
    4848
    49 PassRefPtr<ScriptCallStack> createScriptCallStack(v8::Handle<v8::StackTrace>, size_t maxStackSize);
     49PassRefPtr<ScriptCallStack> createScriptCallStack(v8::Local<v8::Context>, v8::Handle<v8::StackTrace>, size_t maxStackSize);
    5050PassRefPtr<ScriptCallStack> createScriptCallStack(size_t maxStackSize);
    5151PassRefPtr<ScriptArguments> createScriptArguments(const v8::Arguments& v8arguments, unsigned skipArgumentCount);
  • trunk/WebCore/bindings/v8/V8ConsoleMessage.cpp

    r73351 r73355  
    118118    // Currently stack trace is only collected when inspector is open.
    119119    if (!stackTrace.IsEmpty() && stackTrace->GetFrameCount() > 0) {
    120         callStack = createScriptCallStack(stackTrace, ScriptCallStack::maxCallStackSizeToCapture);
     120        v8::Local<v8::Context> context = v8::Context::GetEntered();
     121        callStack = createScriptCallStack(context, stackTrace, ScriptCallStack::maxCallStackSizeToCapture);
    121122    }
    122123
  • trunk/WebCore/inspector/ScriptCallFrame.cpp

    r73351 r73355  
    3737namespace WebCore {
    3838
    39 ScriptCallFrame::ScriptCallFrame(const String& functionName, const String& scriptName, unsigned lineNumber, unsigned column)
     39ScriptCallFrame::ScriptCallFrame(const String& functionName, const String& urlString, unsigned lineNumber)
    4040    : m_functionName(functionName)
    41     , m_scriptName(scriptName)
     41    , m_sourceURL(urlString)
    4242    , m_lineNumber(lineNumber)
    43     , m_column(column)
    4443{
    4544}
     
    5251{
    5352    return m_functionName == o.m_functionName
    54         && m_scriptName == o.m_scriptName
     53        && m_sourceURL == o.m_sourceURL
    5554        && m_lineNumber == o.m_lineNumber;
    5655}
     
    6160    RefPtr<InspectorObject> frame = InspectorObject::create();
    6261    frame->setString("functionName", m_functionName);
    63     frame->setString("scriptName", m_scriptName);
     62    frame->setString("sourceURL", m_sourceURL);
    6463    frame->setNumber("lineNumber", m_lineNumber);
    65     frame->setNumber("column", m_column);
    6664    return frame;
    6765}
  • trunk/WebCore/inspector/ScriptCallFrame.h

    r73351 r73355  
    4141class ScriptCallFrame  {
    4242public:
    43     ScriptCallFrame(const String& functionName, const String& scriptName, unsigned lineNumber, unsigned column = 0);
     43    ScriptCallFrame(const String& functionName, const String& urlString, unsigned lineNumber);
    4444    ~ScriptCallFrame();
    4545
    4646    const String& functionName() const { return m_functionName; }
    47     const String& sourceURL() const { return m_scriptName; }
     47    const String& sourceURL() const { return m_sourceURL; }
    4848    unsigned lineNumber() const { return m_lineNumber; }
    4949
     
    5353private:
    5454    String m_functionName;
    55     String m_scriptName;
     55    String m_sourceURL;
    5656    unsigned m_lineNumber;
    57     unsigned m_column;
    5857};
    5958
  • trunk/WebCore/inspector/ScriptCallStack.h

    r73351 r73355  
    5151    const ScriptCallFrame &at(size_t) const;
    5252    size_t size() const;
     53    static bool stackTrace(int, const RefPtr<InspectorArray>&);
    5354
    5455    bool isEqual(ScriptCallStack*) const;
  • trunk/WebCore/inspector/TimelineRecordFactory.cpp

    r73351 r73355  
    4040#include "ResourceResponse.h"
    4141#include "ScriptCallStack.h"
    42 #include "ScriptCallStackFactory.h"
    4342
    4443namespace WebCore {
     
    4948    record->setNumber("startTime", startTime);
    5049
    51     RefPtr<ScriptCallStack> stackTrace = createScriptCallStack(5);
    52     if (stackTrace && stackTrace->size())
    53         record->setArray("stackTrace", stackTrace->buildInspectorObject());
     50    RefPtr<InspectorArray> stackTrace = InspectorArray::create();
     51    if (ScriptCallStack::stackTrace(5, stackTrace))
     52        record->setArray("stackTrace", stackTrace);
    5453    return record.release();
    5554}
  • trunk/WebCore/inspector/front-end/ConsoleView.js

    r73351 r73355  
    864864            content.appendChild(messageTextElement);
    865865
    866             var urlElement = WebInspector.linkifyResourceAsNode(frame.scriptName, "scripts", frame.lineNumber, "console-message-url");
     866            var urlElement = WebInspector.linkifyResourceAsNode(frame.sourceURL, "scripts", frame.lineNumber, "console-message-url");
    867867            content.appendChild(urlElement);
    868868
Note: See TracChangeset for help on using the changeset viewer.