Changeset 70165 in webkit


Ignore:
Timestamp:
Oct 20, 2010 1:06:57 PM (13 years ago)
Author:
commit-queue@webkit.org
Message:

2010-10-20 Peter Rybin <peter.rybin@gmail.com>

Reviewed by Adam Barth.

HTML parser should provide script column position within HTML document to JavaScript engine
https://bugs.webkit.org/show_bug.cgi?id=45271

Adds TextPosition* classes -- a structure that stores line/column/generation
level coordinates inside text document. Adds *BasedNumber classes -- typesafe int
wrappers that emphasize whether int number is used as zero-based or
one-based.

  • GNUmakefile.am:
  • JavaScriptCore.gypi:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • wtf/text/TextPosition.h: Added. (WTF::TextPosition::TextPosition): (WTF::TextPosition::minimumPosition): (WTF::TextPosition::belowRangePosition): (WTF::ZeroBasedNumber::fromZeroBasedInt): (WTF::ZeroBasedNumber::ZeroBasedNumber): (WTF::ZeroBasedNumber::zeroBasedInt): (WTF::ZeroBasedNumber::base): (WTF::ZeroBasedNumber::belowBase): (WTF::OneBasedNumber::fromOneBasedInt): (WTF::OneBasedNumber::OneBasedNumber): (WTF::OneBasedNumber::oneBasedInt): (WTF::OneBasedNumber::convertAsZeroBasedInt): (WTF::OneBasedNumber::convertToZeroBased): (WTF::OneBasedNumber::base): (WTF::OneBasedNumber::belowBase): (WTF::toZeroBasedTextPosition): (WTF::toOneBasedTextPosition): (WTF::ZeroBasedNumber::convertToOneBased):

2010-10-20 Peter Rybin <peter.rybin@gmail.com>

Reviewed by Adam Barth.

HTML parser should provide script column position within HTML document to JavaScript engine
https://bugs.webkit.org/show_bug.cgi?id=45271

Replaces line number with TextPosition struct so that script engine
gets script starting line/column.

  • ForwardingHeaders/wtf/text/TextPosition.h: Added.
  • bindings/js/ScriptSourceCode.h: (WebCore::ScriptSourceCode::ScriptSourceCode):
  • bindings/v8/ScheduledAction.cpp: (WebCore::ScheduledAction::ScheduledAction):
  • bindings/v8/ScriptController.cpp: (WebCore::ScriptController::eventHandlerPosition):
  • bindings/v8/ScriptController.h:
  • bindings/v8/ScriptEventListener.cpp: (WebCore::createAttributeEventListener):
  • bindings/v8/ScriptSourceCode.h: (WebCore::ScriptSourceCode::ScriptSourceCode): (WebCore::ScriptSourceCode::startLine): (WebCore::ScriptSourceCode::startPosition):
  • bindings/v8/V8LazyEventListener.cpp: (WebCore::V8LazyEventListener::V8LazyEventListener): (WebCore::V8LazyEventListener::prepareListenerObject):
  • bindings/v8/V8LazyEventListener.h: (WebCore::V8LazyEventListener::create):
  • bindings/v8/V8Proxy.cpp: (WebCore::V8Proxy::compileScript): (WebCore::V8Proxy::evaluate): (WebCore::V8Proxy::runScript):
  • bindings/v8/V8Proxy.h:
  • bindings/v8/WorkerContextExecutionProxy.cpp: (WebCore::WorkerContextExecutionProxy::evaluate): (WebCore::WorkerContextExecutionProxy::runScript):
  • bindings/v8/WorkerContextExecutionProxy.h:
  • bindings/v8/WorkerScriptController.cpp: (WebCore::WorkerScriptController::evaluate):
  • dom/PendingScript.cpp: (WebCore::PendingScript::releaseElementAndClear):
  • dom/PendingScript.h: (WebCore::PendingScript::PendingScript): (WebCore::PendingScript::operator=): (WebCore::PendingScript::startingPosition):
  • dom/ScriptableDocumentParser.h:
  • dom/XMLDocumentParser.h:
  • dom/XMLDocumentParserLibxml2.cpp: (WebCore::XMLDocumentParser::XMLDocumentParser): (WebCore::XMLDocumentParser::startElementNs): (WebCore::XMLDocumentParser::endElementNs): (WebCore::XMLDocumentParser::lineNumber): (WebCore::XMLDocumentParser::columnNumber): (WebCore::XMLDocumentParser::textPosition): (WebCore::XMLDocumentParser::textPositionOneBased):
  • dom/XMLDocumentParserQt.cpp: (WebCore::XMLDocumentParser::XMLDocumentParser): (WebCore::XMLDocumentParser::textPosition): (WebCore::XMLDocumentParser::parseStartElement): (WebCore::XMLDocumentParser::parseEndElement):
  • html/parser/HTMLDocumentParser.cpp: (WebCore::HTMLDocumentParser::runScriptsForPausedTreeBuilder): (WebCore::HTMLDocumentParser::textPosition):
  • html/parser/HTMLDocumentParser.h:
  • html/parser/HTMLScriptRunner.cpp: (WebCore::HTMLScriptRunner::sourceFromPendingScript): (WebCore::HTMLScriptRunner::execute): (WebCore::HTMLScriptRunner::runScript):
  • html/parser/HTMLScriptRunner.h:
  • html/parser/HTMLTreeBuilder.cpp: (WebCore::uninitializedPositionValue1): (WebCore::HTMLTreeBuilder::HTMLTreeBuilder): (WebCore::HTMLTreeBuilder::takeScriptToProcess): (WebCore::HTMLTreeBuilder::processEndTag): (WebCore::HTMLTreeBuilder::processScriptStartTag):
  • html/parser/HTMLTreeBuilder.h:

2010-10-20 Peter Rybin <peter.rybin@gmail.com>

Reviewed by Adam Barth.

HTML parser should provide script column position within HTML document to JavaScript engine
https://bugs.webkit.org/show_bug.cgi?id=45271

Replaces script line number with TextPosition structure.

  • src/WebFrameImpl.cpp: (WebKit::WebFrameImpl::executeScript): (WebKit::WebFrameImpl::executeScriptInIsolatedWorld): (WebKit::WebFrameImpl::executeScriptAndReturnValue):
Location:
trunk
Files:
2 added
32 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/ChangeLog

    r70126 r70165  
     12010-10-20  Peter Rybin  <peter.rybin@gmail.com>
     2
     3        Reviewed by Adam Barth.
     4
     5        HTML parser should provide script column position within HTML document to JavaScript engine
     6        https://bugs.webkit.org/show_bug.cgi?id=45271
     7
     8        Adds TextPosition* classes -- a structure that stores line/column/generation
     9        level coordinates inside text document. Adds *BasedNumber classes -- typesafe int
     10        wrappers that emphasize whether int number is used as zero-based or
     11        one-based.
     12
     13        * GNUmakefile.am:
     14        * JavaScriptCore.gypi:
     15        * JavaScriptCore.xcodeproj/project.pbxproj:
     16        * wtf/text/TextPosition.h: Added.
     17        (WTF::TextPosition::TextPosition):
     18        (WTF::TextPosition::minimumPosition):
     19        (WTF::TextPosition::belowRangePosition):
     20        (WTF::ZeroBasedNumber::fromZeroBasedInt):
     21        (WTF::ZeroBasedNumber::ZeroBasedNumber):
     22        (WTF::ZeroBasedNumber::zeroBasedInt):
     23        (WTF::ZeroBasedNumber::base):
     24        (WTF::ZeroBasedNumber::belowBase):
     25        (WTF::OneBasedNumber::fromOneBasedInt):
     26        (WTF::OneBasedNumber::OneBasedNumber):
     27        (WTF::OneBasedNumber::oneBasedInt):
     28        (WTF::OneBasedNumber::convertAsZeroBasedInt):
     29        (WTF::OneBasedNumber::convertToZeroBased):
     30        (WTF::OneBasedNumber::base):
     31        (WTF::OneBasedNumber::belowBase):
     32        (WTF::toZeroBasedTextPosition):
     33        (WTF::toOneBasedTextPosition):
     34        (WTF::ZeroBasedNumber::convertToOneBased):
     35
    1362010-10-19  Kwang Yul Seo  <skyul@company100.net>
    237
  • trunk/JavaScriptCore/GNUmakefile.am

    r70026 r70165  
    518518        JavaScriptCore/wtf/text/StringImpl.h \
    519519        JavaScriptCore/wtf/text/StringStatics.cpp \
     520        JavaScriptCore/wtf/text/TextPosition.h \
    520521        JavaScriptCore/wtf/text/WTFString.cpp \
    521522        JavaScriptCore/wtf/text/WTFString.h \
  • trunk/JavaScriptCore/JavaScriptCore.gypi

    r69912 r70165  
    461461            'wtf/text/StringImpl.h',
    462462            'wtf/text/StringStatics.cpp',
     463            'wtf/text/TextPosition.h',
    463464            'wtf/text/WTFString.cpp',
    464465            'wtf/text/WTFString.h',
  • trunk/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj

    r69970 r70165  
    555555                E1EF79AA0CE97BA60088D500 /* UTF8.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1EF79A80CE97BA60088D500 /* UTF8.cpp */; };
    556556                E48E0F2D0F82151700A8CA37 /* FastAllocBase.h in Headers */ = {isa = PBXBuildFile; fileRef = E48E0F2C0F82151700A8CA37 /* FastAllocBase.h */; settings = {ATTRIBUTES = (Private, ); }; };
     557                F3BD31ED126735770065467F /* TextPosition.h in Headers */ = {isa = PBXBuildFile; fileRef = F3BD31D0126730180065467F /* TextPosition.h */; settings = {ATTRIBUTES = (Private, ); }; };
    557558                FE1B447A0ECCD73B004F4DD1 /* StdLibExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = FE1B44790ECCD73B004F4DD1 /* StdLibExtras.h */; settings = {ATTRIBUTES = (Private, ); }; };
    558559/* End PBXBuildFile section */
     
    11431144                E1EF79A90CE97BA60088D500 /* UTF8.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UTF8.h; sourceTree = "<group>"; };
    11441145                E48E0F2C0F82151700A8CA37 /* FastAllocBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FastAllocBase.h; sourceTree = "<group>"; };
     1146                F3BD31D0126730180065467F /* TextPosition.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TextPosition.h; path = text/TextPosition.h; sourceTree = "<group>"; };
    11451147                F5BB2BC5030F772101FCFE1D /* Completion.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = Completion.h; sourceTree = "<group>"; tabWidth = 8; };
    11461148                F5C290E60284F98E018635CA /* JavaScriptCorePrefix.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = JavaScriptCorePrefix.h; sourceTree = "<group>"; tabWidth = 8; };
     
    18581860                                86B99AE2117E578100DF5A90 /* StringImplBase.h */,
    18591861                                8626BECE11928E3900782FAB /* StringStatics.cpp */,
     1862                                F3BD31D0126730180065467F /* TextPosition.h */,
    18601863                                868BFA15117CF19900B908B1 /* WTFString.cpp */,
    18611864                                868BFA16117CF19900B908B1 /* WTFString.h */,
     
    23472350                                A730B6121250068F009D25B1 /* StrictEvalActivation.h in Headers */,
    23482351                                933F5CDC1269229B0049191E /* NullPtr.h in Headers */,
     2352                                F3BD31ED126735770065467F /* TextPosition.h in Headers */,
    23492353                        );
    23502354                        runOnlyForDeploymentPostprocessing = 0;
  • trunk/WebCore/ChangeLog

    r70158 r70165  
     12010-10-20  Peter Rybin  <peter.rybin@gmail.com>
     2
     3        Reviewed by Adam Barth.
     4
     5        HTML parser should provide script column position within HTML document to JavaScript engine
     6        https://bugs.webkit.org/show_bug.cgi?id=45271
     7
     8        Replaces line number with TextPosition struct so that script engine
     9        gets script starting line/column.
     10
     11        * ForwardingHeaders/wtf/text/TextPosition.h: Added.
     12        * bindings/js/ScriptSourceCode.h:
     13        (WebCore::ScriptSourceCode::ScriptSourceCode):
     14        * bindings/v8/ScheduledAction.cpp:
     15        (WebCore::ScheduledAction::ScheduledAction):
     16        * bindings/v8/ScriptController.cpp:
     17        (WebCore::ScriptController::eventHandlerPosition):
     18        * bindings/v8/ScriptController.h:
     19        * bindings/v8/ScriptEventListener.cpp:
     20        (WebCore::createAttributeEventListener):
     21        * bindings/v8/ScriptSourceCode.h:
     22        (WebCore::ScriptSourceCode::ScriptSourceCode):
     23        (WebCore::ScriptSourceCode::startLine):
     24        (WebCore::ScriptSourceCode::startPosition):
     25        * bindings/v8/V8LazyEventListener.cpp:
     26        (WebCore::V8LazyEventListener::V8LazyEventListener):
     27        (WebCore::V8LazyEventListener::prepareListenerObject):
     28        * bindings/v8/V8LazyEventListener.h:
     29        (WebCore::V8LazyEventListener::create):
     30        * bindings/v8/V8Proxy.cpp:
     31        (WebCore::V8Proxy::compileScript):
     32        (WebCore::V8Proxy::evaluate):
     33        (WebCore::V8Proxy::runScript):
     34        * bindings/v8/V8Proxy.h:
     35        * bindings/v8/WorkerContextExecutionProxy.cpp:
     36        (WebCore::WorkerContextExecutionProxy::evaluate):
     37        (WebCore::WorkerContextExecutionProxy::runScript):
     38        * bindings/v8/WorkerContextExecutionProxy.h:
     39        * bindings/v8/WorkerScriptController.cpp:
     40        (WebCore::WorkerScriptController::evaluate):
     41        * dom/PendingScript.cpp:
     42        (WebCore::PendingScript::releaseElementAndClear):
     43        * dom/PendingScript.h:
     44        (WebCore::PendingScript::PendingScript):
     45        (WebCore::PendingScript::operator=):
     46        (WebCore::PendingScript::startingPosition):
     47        * dom/ScriptableDocumentParser.h:
     48        * dom/XMLDocumentParser.h:
     49        * dom/XMLDocumentParserLibxml2.cpp:
     50        (WebCore::XMLDocumentParser::XMLDocumentParser):
     51        (WebCore::XMLDocumentParser::startElementNs):
     52        (WebCore::XMLDocumentParser::endElementNs):
     53        (WebCore::XMLDocumentParser::lineNumber):
     54        (WebCore::XMLDocumentParser::columnNumber):
     55        (WebCore::XMLDocumentParser::textPosition):
     56        (WebCore::XMLDocumentParser::textPositionOneBased):
     57        * dom/XMLDocumentParserQt.cpp:
     58        (WebCore::XMLDocumentParser::XMLDocumentParser):
     59        (WebCore::XMLDocumentParser::textPosition):
     60        (WebCore::XMLDocumentParser::parseStartElement):
     61        (WebCore::XMLDocumentParser::parseEndElement):
     62        * html/parser/HTMLDocumentParser.cpp:
     63        (WebCore::HTMLDocumentParser::runScriptsForPausedTreeBuilder):
     64        (WebCore::HTMLDocumentParser::textPosition):
     65        * html/parser/HTMLDocumentParser.h:
     66        * html/parser/HTMLScriptRunner.cpp:
     67        (WebCore::HTMLScriptRunner::sourceFromPendingScript):
     68        (WebCore::HTMLScriptRunner::execute):
     69        (WebCore::HTMLScriptRunner::runScript):
     70        * html/parser/HTMLScriptRunner.h:
     71        * html/parser/HTMLTreeBuilder.cpp:
     72        (WebCore::uninitializedPositionValue1):
     73        (WebCore::HTMLTreeBuilder::HTMLTreeBuilder):
     74        (WebCore::HTMLTreeBuilder::takeScriptToProcess):
     75        (WebCore::HTMLTreeBuilder::processEndTag):
     76        (WebCore::HTMLTreeBuilder::processScriptStartTag):
     77        * html/parser/HTMLTreeBuilder.h:
     78
    1792010-10-20  David Hyatt  <hyatt@apple.com>
    280
  • trunk/WebCore/bindings/js/ScriptSourceCode.h

    r50230 r70165  
    3636#include "StringSourceProvider.h"
    3737#include "KURL.h"
     38#include <wtf/text/TextPosition.h>
    3839#include <wtf/RefPtr.h>
    3940
     
    4243class ScriptSourceCode {
    4344public:
    44     ScriptSourceCode(const String& source, const KURL& url = KURL(), int startLine = 1)
     45    ScriptSourceCode(const String& source, const KURL& url = KURL(), const TextPosition1& startPosition = TextPosition1::minimumPosition())
    4546        : m_provider(StringSourceProvider::create(source, url.isNull() ? String() : url.string()))
    46         , m_code(m_provider, startLine)
     47        , m_code(m_provider, startPosition.m_line.oneBasedInt())
    4748        , m_url(url)
    4849    {
  • trunk/WebCore/bindings/v8/ScheduledAction.cpp

    r64735 r70165  
    4646ScheduledAction::ScheduledAction(v8::Handle<v8::Context> context, v8::Handle<v8::Function> func, int argc, v8::Handle<v8::Value> argv[])
    4747    : m_context(context)
    48     , m_code(String(), KURL(), 0)
     48    , m_code(String(), KURL(), TextPosition1::belowRangePosition())
    4949{
    5050    m_function = v8::Persistent<v8::Function>::New(func);
  • trunk/WebCore/bindings/v8/ScriptController.cpp

    r69662 r70165  
    263263}
    264264
    265 int ScriptController::eventHandlerLineNumber() const
     265TextPosition0 ScriptController::eventHandlerPosition() const
    266266{
    267267    ScriptableDocumentParser* parser = m_frame->document()->scriptableDocumentParser();
    268268    if (parser)
    269         return parser->lineNumber();
    270     return 0;
    271 }
    272 
    273 int ScriptController::eventHandlerColumnNumber() const
    274 {
    275     ScriptableDocumentParser* parser = m_frame->document()->scriptableDocumentParser();
    276     if (parser)
    277         return parser->columnNumber();
    278     return 0;
     269        return parser->textPosition();
     270    return TextPosition0::minimumPosition();
    279271}
    280272
  • trunk/WebCore/bindings/v8/ScriptController.h

    r69924 r70165  
    156156    void finishedWithEvent(Event*);
    157157
    158     int eventHandlerLineNumber() const;
    159     int eventHandlerColumnNumber() const;
     158    TextPosition0 eventHandlerPosition() const;
    160159
    161160    void setProcessingTimerCallback(bool processingTimerCallback) { m_processingTimerCallback = processingTimerCallback; }
  • trunk/WebCore/bindings/v8/ScriptEventListener.cpp

    r62897 r70165  
    5151        return 0;
    5252
    53     int lineNumber = 1;
    54     int columnNumber = 0;
     53    // FIXME: Very strange: we initialize zero-based number with '1'.
     54    TextPosition0 position(WTF::ZeroBasedNumber::fromZeroBasedInt(1), WTF::ZeroBasedNumber::base());
    5555    String sourceURL;
    5656
     
    6565        }
    6666
    67         lineNumber = scriptController->eventHandlerLineNumber();
    68         columnNumber = scriptController->eventHandlerColumnNumber();
     67        position = scriptController->eventHandlerPosition();
    6968        sourceURL = node->document()->url().string();
    7069    }
    7170
    72     return V8LazyEventListener::create(attr->localName().string(), node->isSVGElement(), attr->value(), sourceURL, lineNumber, columnNumber, WorldContextHandle(UseMainWorld));
     71    return V8LazyEventListener::create(attr->localName().string(), node->isSVGElement(), attr->value(), sourceURL, position, WorldContextHandle(UseMainWorld));
    7372}
    7473
     
    8281        return 0;
    8382
    84     int lineNumber = 1;
    85     int columnNumber = 0;
    86     String sourceURL;
    87 
    8883    ScriptController* scriptController = frame->script();
    8984    if (!scriptController->canExecuteScripts(AboutToExecuteScript))
     
    9590    }
    9691
    97     lineNumber = scriptController->eventHandlerLineNumber();
    98     columnNumber = scriptController->eventHandlerColumnNumber();
    99     sourceURL = frame->document()->url().string();
    100     return V8LazyEventListener::create(attr->localName().string(), frame->document()->isSVGDocument(), attr->value(), sourceURL, lineNumber, columnNumber, WorldContextHandle(UseMainWorld));
     92    TextPosition0 position = scriptController->eventHandlerPosition();
     93    String sourceURL = frame->document()->url().string();
     94    return V8LazyEventListener::create(attr->localName().string(), frame->document()->isSVGDocument(), attr->value(), sourceURL, position, WorldContextHandle(UseMainWorld));
    10195}
    10296
  • trunk/WebCore/bindings/v8/ScriptSourceCode.h

    r63275 r70165  
    3636#include "KURL.h"
    3737#include "PlatformString.h"
     38#include <wtf/text/TextPosition.h>
    3839
    3940namespace WebCore {
     
    4142class ScriptSourceCode {
    4243public:
    43     ScriptSourceCode(const String& source, const KURL& url = KURL(), int startLine = 1)
     44    ScriptSourceCode(const String& source, const KURL& url = KURL(), const TextPosition1& startPosition = TextPosition1::minimumPosition())
    4445        : m_source(source)
    4546        , m_cachedScript(0)
    4647        , m_url(url)
    47         , m_startLine(startLine)
     48        , m_startPosition(startPosition)
    4849    {
    4950    }
     
    5556        , m_cachedScript(cs)
    5657        , m_url(ParsedURLString, cs->url())
    57         , m_startLine(1)
     58        , m_startPosition(TextPosition1::minimumPosition())
    5859    {
    5960    }
     
    6465    CachedScript* cachedScript() const { return m_cachedScript.get(); }
    6566    const KURL& url() const { return m_url; }
    66     int startLine() const { return m_startLine; }
     67    int startLine() const { return m_startPosition.m_line.oneBasedInt(); }
     68    const TextPosition1& startPosition() const { return m_startPosition; }
    6769
    6870private:
     
    7072    CachedResourceHandle<CachedScript> m_cachedScript;
    7173    KURL m_url;
    72     int m_startLine;
     74    TextPosition1 m_startPosition;
    7375};
    7476
  • trunk/WebCore/bindings/v8/V8LazyEventListener.cpp

    r53155 r70165  
    4242namespace WebCore {
    4343
    44 V8LazyEventListener::V8LazyEventListener(const String& functionName, bool isSVGEvent, const String& code, const String sourceURL, int lineNumber, int columnNumber, const WorldContextHandle& worldContext)
     44V8LazyEventListener::V8LazyEventListener(const String& functionName, bool isSVGEvent, const String& code, const String sourceURL, const TextPosition0& position, const WorldContextHandle& worldContext)
    4545    : V8AbstractEventListener(true, worldContext)
    4646    , m_functionName(functionName)
     
    4848    , m_code(code)
    4949    , m_sourceURL(sourceURL)
    50     , m_lineNumber(lineNumber)
    51     , m_columnNumber(columnNumber)
     50    , m_position(position)
    5251{
    5352}
     
    115114    code.append(  "\n}).call(this, evt);}}}})");
    116115    v8::Handle<v8::String> codeExternalString = v8ExternalString(code);
    117     v8::Handle<v8::Script> script = V8Proxy::compileScript(codeExternalString, m_sourceURL, m_lineNumber);
     116    v8::Handle<v8::Script> script = V8Proxy::compileScript(codeExternalString, m_sourceURL, m_position);
    118117    if (!script.IsEmpty()) {
    119118        v8::Local<v8::Value> value = proxy->runScript(script, false);
  • trunk/WebCore/bindings/v8/V8LazyEventListener.h

    r55326 r70165  
    3535#include "V8AbstractEventListener.h"
    3636#include <v8.h>
     37#include <wtf/text/TextPosition.h>
    3738#include <wtf/PassRefPtr.h>
    3839
     
    4647    class V8LazyEventListener : public V8AbstractEventListener {
    4748    public:
    48         static PassRefPtr<V8LazyEventListener> create(const String& functionName, bool isSVGEvent, const String& code, const String& sourceURL, int lineNumber, int columnNumber, const WorldContextHandle& worldContext)
     49        static PassRefPtr<V8LazyEventListener> create(const String& functionName, bool isSVGEvent, const String& code, const String& sourceURL, const TextPosition0& position, const WorldContextHandle& worldContext)
    4950        {
    50             return adoptRef(new V8LazyEventListener(functionName, isSVGEvent, code, sourceURL, lineNumber, columnNumber, worldContext));
     51            return adoptRef(new V8LazyEventListener(functionName, isSVGEvent, code, sourceURL, position, worldContext));
    5152        }
    5253
     
    5758
    5859    private:
    59         V8LazyEventListener(const String& functionName, bool isSVGEvent, const String& code, const String sourceURL, int lineNumber, int columnNumber, const WorldContextHandle& worldContext);
     60        V8LazyEventListener(const String& functionName, bool isSVGEvent, const String& code, const String sourceURL, const TextPosition0& position, const WorldContextHandle& worldContext);
    6061
    6162        virtual v8::Local<v8::Value> callListenerFunction(ScriptExecutionContext*, v8::Handle<v8::Value> jsEvent, Event*);
     
    7172        String m_code;
    7273        String m_sourceURL;
    73         int m_lineNumber;
    74         int m_columnNumber;
     74        TextPosition0 m_position;
    7575    };
    7676
  • trunk/WebCore/bindings/v8/V8Proxy.cpp

    r69798 r70165  
    236236}
    237237
    238 v8::Handle<v8::Script> V8Proxy::compileScript(v8::Handle<v8::String> code, const String& fileName, int baseLine, v8::ScriptData* scriptData)
     238v8::Handle<v8::Script> V8Proxy::compileScript(v8::Handle<v8::String> code, const String& fileName, const TextPosition0& scriptStartPosition, v8::ScriptData* scriptData)
    239239{
    240240    const uint16_t* fileNameString = fromWebCoreString(fileName);
    241241    v8::Handle<v8::String> name = v8::String::New(fileNameString, fileName.length());
    242     v8::Handle<v8::Integer> line = v8::Integer::New(baseLine);
    243     v8::ScriptOrigin origin(name, line);
     242    v8::Handle<v8::Integer> line = v8::Integer::New(scriptStartPosition.m_line.zeroBasedInt());
     243    v8::Handle<v8::Integer> column = v8::Integer::New(scriptStartPosition.m_column.zeroBasedInt());
     244    v8::ScriptOrigin origin(name, line, column);
    244245    v8::Handle<v8::Script> script = v8::Script::Compile(code, &origin, scriptData);
    245246    return script;
     
    394395        // NOTE: For compatibility with WebCore, ScriptSourceCode's line starts at
    395396        // 1, whereas v8 starts at 0.
    396         v8::Handle<v8::Script> script = compileScript(code, source.url(), source.startLine() - 1, scriptData.get());
     397        v8::Handle<v8::Script> script = compileScript(code, source.url(), WTF::toZeroBasedTextPosition(source.startPosition()), scriptData.get());
    397398#if PLATFORM(CHROMIUM)
    398399        PlatformBridge::traceEventEnd("v8.compile", node, "");
     
    426427        // script passed to us as the argument instead of using an empty string
    427428        // and 0 baseLine.
    428         script = compileScript(code, "", 0);
     429        script = compileScript(code, "", TextPosition0::minimumPosition());
    429430    }
    430431
  • trunk/WebCore/bindings/v8/V8Proxy.h

    r68666 r70165  
    280280        static v8::Handle<v8::Value> checkNewLegal(const v8::Arguments&);
    281281
    282         static v8::Handle<v8::Script> compileScript(v8::Handle<v8::String> code, const String& fileName, int baseLine, v8::ScriptData* = 0);
     282        static v8::Handle<v8::Script> compileScript(v8::Handle<v8::String> code, const String& fileName, const TextPosition0& scriptStartPosition, v8::ScriptData* = 0);
    283283
    284284        // If the exception code is different from zero, a DOM exception is
  • trunk/WebCore/bindings/v8/WorkerContextExecutionProxy.cpp

    r56580 r70165  
    185185}
    186186
    187 ScriptValue WorkerContextExecutionProxy::evaluate(const String& script, const String& fileName, int baseLine, WorkerContextExecutionState* state)
     187ScriptValue WorkerContextExecutionProxy::evaluate(const String& script, const String& fileName, const TextPosition0& scriptStartPosition, WorkerContextExecutionState* state)
    188188{
    189189    v8::HandleScope hs;
     
    197197
    198198    v8::Local<v8::String> scriptString = v8ExternalString(script);
    199     v8::Handle<v8::Script> compiledScript = V8Proxy::compileScript(scriptString, fileName, baseLine);
     199    v8::Handle<v8::Script> compiledScript = V8Proxy::compileScript(scriptString, fileName, scriptStartPosition);
    200200    v8::Local<v8::Value> result = runScript(compiledScript);
    201201
     
    228228    if (m_recursion >= kMaxRecursionDepth) {
    229229        v8::Local<v8::String> code = v8ExternalString("throw RangeError('Recursion too deep')");
    230         script = V8Proxy::compileScript(code, "", 0);
     230        script = V8Proxy::compileScript(code, "", TextPosition0::minimumPosition());
    231231    }
    232232
  • trunk/WebCore/bindings/v8/WorkerContextExecutionProxy.h

    r57767 r70165  
    3737#include "ScriptValue.h"
    3838#include <v8.h>
     39#include <wtf/text/TextPosition.h>
    3940#include <wtf/OwnPtr.h>
    4041#include <wtf/Vector.h>
     
    6768
    6869        // Evaluate a script file in the current execution environment.
    69         ScriptValue evaluate(const String& script, const String& fileName, int baseLine, WorkerContextExecutionState*);
     70        ScriptValue evaluate(const String& script, const String& fileName, const TextPosition0& scriptStartPosition, WorkerContextExecutionState*);
    7071
    7172        // Returns a local handle of the context.
  • trunk/WebCore/bindings/v8/WorkerScriptController.cpp

    r57349 r70165  
    7676
    7777    WorkerContextExecutionState state;
    78     ScriptValue result = m_proxy->evaluate(sourceCode.source(), sourceCode.url().string(), sourceCode.startLine() - 1, &state);
     78    ScriptValue result = m_proxy->evaluate(sourceCode.source(), sourceCode.url().string(), WTF::toZeroBasedTextPosition(sourceCode.startPosition()), &state);
    7979    if (state.hadException) {
    8080        if (exception)
  • trunk/WebCore/dom/PendingScript.cpp

    r64857 r70165  
    4141{
    4242    setCachedScript(0);
    43     m_startingLineNumber = 0;
     43    m_startingPosition = TextPosition1::belowRangePosition();
    4444    m_watchingForLoad = false;
    4545    return m_element.release();
  • trunk/WebCore/dom/PendingScript.h

    r65217 r70165  
    2929#include "CachedResourceClient.h"
    3030#include "CachedResourceHandle.h"
     31#include <wtf/text/TextPosition.h>
    3132#include <wtf/PassRefPtr.h>
    3233
     
    4445public:
    4546    PendingScript()
    46         : m_startingLineNumber(0)
     47        : m_startingPosition(TextPosition1::belowRangePosition())
    4748        , m_watchingForLoad(false)
    4849    {
     
    5152    PendingScript(const PendingScript& other)
    5253        : CachedResourceClient(other)
    53         , m_startingLineNumber(other.m_startingLineNumber)
     54        , m_startingPosition(other.m_startingPosition)
    5455        , m_watchingForLoad(other.m_watchingForLoad)
    5556        , m_element(other.m_element)
     
    6566            return *this;
    6667
    67         m_startingLineNumber = other.m_startingLineNumber;
     68        m_startingPosition = other.m_startingPosition;
    6869        m_watchingForLoad = other.m_watchingForLoad;
    6970        m_element = other.m_element;
     
    7576    // FIXME: No setter means this is never set to anything other than 0.
    7677    // This is either unnecessary or incorrect.
    77     int startingLineNumber() const { return m_startingLineNumber; }
     78    TextPosition1 startingPosition() const { return m_startingPosition; }
    7879
    7980    bool watchingForLoad() const { return m_watchingForLoad; }
     
    9091
    9192private:
    92     int m_startingLineNumber; // Only used for inline script tags.
     93    TextPosition1 m_startingPosition; // Only used for inline script tags.
    9394    bool m_watchingForLoad;
    9495    RefPtr<Element> m_element;
  • trunk/WebCore/dom/ScriptableDocumentParser.h

    r66967 r70165  
    2828
    2929#include "DecodedDataDocumentParser.h"
     30#include <wtf/text/TextPosition.h>
    3031
    3132namespace WebCore {
    3233
    33 class SegmentedString;
    3434class XSSAuditor;
    3535
     
    4848    // These are used to expose the current line/column to the scripting system.
    4949    virtual int lineNumber() const = 0;
    50     virtual int columnNumber() const = 0;
     50    virtual TextPosition0 textPosition() const = 0;
    5151
    5252    XSSAuditor* xssAuditor() const { return m_xssAuditor; }
  • trunk/WebCore/dom/XMLDocumentParser.h

    r67807 r70165  
    103103        virtual bool wellFormed() const { return !m_sawError; }
    104104        virtual int lineNumber() const;
    105         virtual int columnNumber() const;
     105        TextPosition0 textPosition() const;
    106106
    107107        static bool supportsXMLVersion(const String&);
     
    129129
    130130        bool appendFragmentSource(const String&);
     131
     132        int columnNumber() const;
     133        // The method is used in XMLDocumentParserLibxml2.cpp only,
     134        // It is neither used nor implemented in XMLDocumentParserQt.cpp.
     135        TextPosition1 textPositionOneBased() const;
    131136
    132137#if USE(QXMLSTREAM)
     
    209214        CachedResourceHandle<CachedScript> m_pendingScript;
    210215        RefPtr<Element> m_scriptElement;
    211         int m_scriptStartLine;
     216        TextPosition1 m_scriptStartPosition;
    212217
    213218        bool m_parsingFragment;
  • trunk/WebCore/dom/XMLDocumentParserLibxml2.cpp

    r69868 r70165  
    561561    , m_lastErrorColumn(0)
    562562    , m_pendingScript(0)
    563     , m_scriptStartLine(0)
     563    , m_scriptStartPosition(TextPosition1::belowRangePosition())
    564564    , m_parsingFragment(false)
    565565    , m_scriptingPermission(FragmentScriptingAllowed)
     
    588588    , m_lastErrorColumn(0)
    589589    , m_pendingScript(0)
    590     , m_scriptStartLine(0)
     590    , m_scriptStartPosition(TextPosition1::belowRangePosition())
    591591    , m_parsingFragment(true)
    592592    , m_scriptingPermission(scriptingPermission)
     
    820820    ScriptElement* scriptElement = toScriptElement(newElement.get());
    821821    if (scriptElement)
    822         m_scriptStartLine = lineNumber();
     822        m_scriptStartPosition = textPositionOneBased();
    823823
    824824    m_currentNode->deprecatedParserAddChild(newElement.get());
     
    911911                m_scriptElement = 0;
    912912        } else
    913             m_view->frame()->script()->executeScript(ScriptSourceCode(scriptElement->scriptContent(), document()->url(), m_scriptStartLine));
     913            m_view->frame()->script()->executeScript(ScriptSourceCode(scriptElement->scriptContent(), document()->url(), m_scriptStartPosition));
    914914
    915915        // JavaScript may have detached the parser
     
    13771377int XMLDocumentParser::lineNumber() const
    13781378{
     1379    // FIXME: The implementation probably returns 1-based int, but method should return 0-based.
    13791380    return context() ? context()->input->line : 1;
    13801381}
     
    13821383int XMLDocumentParser::columnNumber() const
    13831384{
     1385    // FIXME: The implementation probably returns 1-based int, but method should return 0-based.
    13841386    return context() ? context()->input->col : 1;
     1387}
     1388
     1389TextPosition0 XMLDocumentParser::textPosition() const
     1390{
     1391    xmlParserCtxtPtr context = this->context();
     1392    if (!context)
     1393        return TextPosition0::minimumPosition();
     1394    // FIXME: The context probably contains 1-based numbers, but we treat them as 0-based,
     1395    //        to be consistent with fixme's in lineNumber() and columnNumber
     1396    //        methods.
     1397    return TextPosition0(WTF::ZeroBasedNumber::fromZeroBasedInt(context->input->line),
     1398        WTF::ZeroBasedNumber::fromZeroBasedInt(context->input->col));
     1399}
     1400
     1401// This method has a correct implementation, in contrast to textPosition() method.
     1402// It should replace textPosition().
     1403TextPosition1 XMLDocumentParser::textPositionOneBased() const
     1404{
     1405    xmlParserCtxtPtr context = this->context();
     1406    if (!context)
     1407        return TextPosition1::minimumPosition();
     1408    return TextPosition1(WTF::OneBasedNumber::fromOneBasedInt(context->input->line),
     1409        WTF::OneBasedNumber::fromOneBasedInt(context->input->col));
    13851410}
    13861411
  • trunk/WebCore/dom/XMLDocumentParserQt.cpp

    r69026 r70165  
    106106    , m_lastErrorColumn(0)
    107107    , m_pendingScript(0)
    108     , m_scriptStartLine(0)
     108    , m_scriptStartPosition(TextPosition1::belowRangePosition())
    109109    , m_parsingFragment(false)
    110110    , m_scriptingPermission(FragmentScriptingAllowed)
     
    133133    , m_lastErrorColumn(0)
    134134    , m_pendingScript(0)
    135     , m_scriptStartLine(0)
     135    , m_scriptStartPosition(TextPosition1::belowRangePosition())
    136136    , m_parsingFragment(true)
    137137    , m_scriptingPermission(permission)
     
    235235}
    236236
     237TextPosition0 XMLDocumentParser::textPosition() const
     238{
     239    return TextPosition0(WTF::ZeroBasedNumber::fromZeroBasedInt(lineNumber()), WTF::ZeroBasedNumber::fromZeroBasedInt(columnNumber()));
     240}
     241
    237242void XMLDocumentParser::stopParsing()
    238243{
     
    519524    ScriptElement* scriptElement = toScriptElement(newElement.get());
    520525    if (scriptElement)
    521         m_scriptStartLine = lineNumber();
     526        m_scriptStartPosition = WTF::toOneBasedTextPosition(textPosition());
    522527
    523528    m_currentNode->deprecatedParserAddChild(newElement.get());
     
    596601                m_scriptElement = 0;
    597602        } else
    598             m_view->frame()->script()->executeScript(ScriptSourceCode(scriptElement->scriptContent(), document()->url(), m_scriptStartLine));
     603            m_view->frame()->script()->executeScript(ScriptSourceCode(scriptElement->scriptContent(), document()->url(), m_scriptStartPosition));
    599604    }
    600605    m_requestingScript = false;
     
    717722}
    718723}
    719 
  • trunk/WebCore/html/parser/HTMLDocumentParser.cpp

    r69406 r70165  
    192192    ASSERT(m_treeBuilder->isPaused());
    193193
    194     int scriptStartLine = 0;
    195     RefPtr<Element> scriptElement = m_treeBuilder->takeScriptToProcess(scriptStartLine);
     194    TextPosition1 scriptStartPosition = TextPosition1::belowRangePosition();
     195    RefPtr<Element> scriptElement = m_treeBuilder->takeScriptToProcess(scriptStartPosition);
    196196    // We will not have a scriptRunner when parsing a DocumentFragment.
    197197    if (!m_scriptRunner)
    198198        return true;
    199     return m_scriptRunner->execute(scriptElement.release(), scriptStartLine);
     199    return m_scriptRunner->execute(scriptElement.release(), scriptStartPosition);
    200200}
    201201
     
    397397}
    398398
    399 int HTMLDocumentParser::columnNumber() const
    400 {
    401     return m_tokenizer->columnNumber();
     399TextPosition0 HTMLDocumentParser::textPosition() const
     400{
     401    int lineZeroBased = m_tokenizer->lineNumber();
     402    int columnOneBased = m_tokenizer->columnNumber();
     403
     404    return TextPosition0(WTF::ZeroBasedNumber::fromZeroBasedInt(lineZeroBased),
     405        WTF::OneBasedNumber::fromOneBasedInt(columnOneBased).convertToZeroBased());
    402406}
    403407
  • trunk/WebCore/html/parser/HTMLDocumentParser.h

    r69283 r70165  
    9393    virtual void executeScriptsWaitingForStylesheets();
    9494    virtual int lineNumber() const;
    95     virtual int columnNumber() const;
     95    virtual TextPosition0 textPosition() const;
    9696
    9797    // HTMLScriptRunnerHost
  • trunk/WebCore/html/parser/HTMLScriptRunner.cpp

    r67245 r70165  
    9999    }
    100100    errorOccurred = false;
    101     return ScriptSourceCode(script.element()->textContent(), documentURLForScriptExecution(m_document), script.startingLineNumber());
     101    return ScriptSourceCode(script.element()->textContent(), documentURLForScriptExecution(m_document), script.startingPosition());
    102102}
    103103
     
    171171// This function should match 10.2.5.11 "An end tag whose tag name is 'script'"
    172172// Script handling lives outside the tree builder to keep the each class simple.
    173 bool HTMLScriptRunner::execute(PassRefPtr<Element> scriptElement, int startLine)
     173bool HTMLScriptRunner::execute(PassRefPtr<Element> scriptElement, const TextPosition1& scriptStartPosition)
    174174{
    175175    ASSERT(scriptElement);
     
    177177
    178178    // Try to execute the script given to us.
    179     runScript(scriptElement.get(), startLine);
     179    runScript(scriptElement.get(), scriptStartPosition);
    180180
    181181    if (haveParsingBlockingScript()) {
     
    289289// This method is meant to match the HTML5 definition of "running a script"
    290290// http://www.whatwg.org/specs/web-apps/current-work/multipage/scripting-1.html#running-a-script
    291 void HTMLScriptRunner::runScript(Element* script, int startingLineNumber)
     291void HTMLScriptRunner::runScript(Element* script, const TextPosition1& scriptStartPosition)
    292292{
    293293    ASSERT(m_document);
     
    316316            // ASSERT(document()->haveStylesheetsLoaded());
    317317            ASSERT(isExecutingScript());
    318             ScriptSourceCode sourceCode(script->textContent(), documentURLForScriptExecution(m_document), startingLineNumber);
     318            ScriptSourceCode sourceCode(script->textContent(), documentURLForScriptExecution(m_document), scriptStartPosition);
    319319            executeScript(sourceCode);
    320320        }
  • trunk/WebCore/html/parser/HTMLScriptRunner.h

    r67245 r70165  
    2929#include "PendingScript.h"
    3030#include <wtf/Deque.h>
     31#include <wtf/text/TextPosition.h>
    3132#include <wtf/Noncopyable.h>
    3233#include <wtf/PassRefPtr.h>
     
    5354
    5455    // Processes the passed in script and any pending scripts if possible.
    55     bool execute(PassRefPtr<Element> scriptToProcess, int scriptStartLine);
     56    bool execute(PassRefPtr<Element> scriptToProcess, const TextPosition1& scriptStartPosition);
    5657
    5758    bool executeScriptsWaitingForLoad(CachedResource*);
     
    7778    bool requestPendingScript(PendingScript&, Element*) const;
    7879
    79     void runScript(Element*, int startingLineNumber);
     80    void runScript(Element*, const TextPosition1& scriptStartPosition);
    8081
    8182    // Helpers for dealing with HTMLScriptRunnerHost
  • trunk/WebCore/html/parser/HTMLTreeBuilder.cpp

    r70094 r70165  
    5656
    5757static const int uninitializedLineNumberValue = -1;
     58
     59static TextPosition1 uninitializedPositionValue1()
     60{
     61    return TextPosition1(WTF::OneBasedNumber::fromOneBasedInt(-1), WTF::OneBasedNumber::base());
     62}
    5863
    5964namespace {
     
    334339    , m_secondaryInsertionMode(InitialMode)
    335340    , m_tokenizer(tokenizer)
    336     , m_scriptToProcessStartLine(uninitializedLineNumberValue)
    337     , m_lastScriptElementStartLine(uninitializedLineNumberValue)
     341    , m_scriptToProcessStartPosition(uninitializedPositionValue1())
     342    , m_lastScriptElementStartPosition(TextPosition0::belowRangePosition())
    338343    , m_usePreHTML5ParserQuirks(usePreHTML5ParserQuirks)
    339344{
     
    353358    , m_secondaryInsertionMode(InitialMode)
    354359    , m_tokenizer(tokenizer)
    355     , m_scriptToProcessStartLine(uninitializedLineNumberValue)
    356     , m_lastScriptElementStartLine(uninitializedLineNumberValue)
     360    , m_scriptToProcessStartPosition(uninitializedPositionValue1())
     361    , m_lastScriptElementStartPosition(TextPosition0::belowRangePosition())
    357362    , m_usePreHTML5ParserQuirks(usePreHTML5ParserQuirks)
    358363{
     
    416421}
    417422
    418 PassRefPtr<Element> HTMLTreeBuilder::takeScriptToProcess(int& scriptStartLine)
     423PassRefPtr<Element> HTMLTreeBuilder::takeScriptToProcess(TextPosition1& scriptStartPosition)
    419424{
    420425    // Unpause ourselves, callers may pause us again when processing the script.
     
    423428    // before running scripts.
    424429    m_isPaused = false;
    425     scriptStartLine = m_scriptToProcessStartLine;
    426     m_scriptToProcessStartLine = uninitializedLineNumberValue;
     430    scriptStartPosition = m_scriptToProcessStartPosition;
     431    m_scriptToProcessStartPosition = uninitializedPositionValue1();
    427432    return m_scriptToProcess.release();
    428433}
     
    22022207            ASSERT(m_tree.currentElement()->hasTagName(scriptTag));
    22032208            m_scriptToProcess = m_tree.currentElement();
    2204             m_scriptToProcessStartLine = m_lastScriptElementStartLine + 1;
     2209            m_scriptToProcessStartPosition = WTF::toOneBasedTextPosition(m_lastScriptElementStartPosition);
    22052210            m_tree.openElements()->pop();
    22062211            if (isParsingFragment() && m_fragmentContext.scriptingPermission() == FragmentScriptingNotAllowed)
     
    27512756    m_tokenizer->setState(HTMLTokenizer::ScriptDataState);
    27522757    m_originalInsertionMode = m_insertionMode;
    2753     m_lastScriptElementStartLine = m_tokenizer->lineNumber();
     2758
     2759    TextPosition0 position = TextPosition0(WTF::ZeroBasedNumber::fromZeroBasedInt(m_tokenizer->lineNumber()), WTF::ZeroBasedNumber::base());
     2760    m_lastScriptElementStartPosition = position;
     2761
    27542762    setInsertionMode(TextMode);
    27552763}
  • trunk/WebCore/html/parser/HTMLTreeBuilder.h

    r68115 r70165  
    3333#include "HTMLFormattingElementList.h"
    3434#include "HTMLTokenizer.h"
     35#include <wtf/text/TextPosition.h>
    3536#include <wtf/Noncopyable.h>
    3637#include <wtf/OwnPtr.h>
     
    7273
    7374    // Must be called when parser is paused before calling the parser again.
    74     PassRefPtr<Element> takeScriptToProcess(int& scriptStartLine);
     75    PassRefPtr<Element> takeScriptToProcess(TextPosition1& scriptStartPosition);
    7576
    7677    // Done, close any open tags, etc.
     
    247248
    248249    RefPtr<Element> m_scriptToProcess; // <script> tag which needs processing before resuming the parser.
    249     int m_scriptToProcessStartLine; // Starting line number of the script tag needing processing.
     250    TextPosition1 m_scriptToProcessStartPosition; // Starting line number of the script tag needing processing.
    250251
    251252    // FIXME: We probably want to remove this member.  Originally, it was
    252253    // created to service the legacy tree builder, but it seems to be used for
    253254    // some other things now.
    254     int m_lastScriptElementStartLine;
    255    
     255    TextPosition0 m_lastScriptElementStartPosition;
    256256    bool m_usePreHTML5ParserQuirks;
    257257};
  • trunk/WebKit/chromium/ChangeLog

    r70153 r70165  
     12010-10-20  Peter Rybin  <peter.rybin@gmail.com>
     2
     3        Reviewed by Adam Barth.
     4
     5        HTML parser should provide script column position within HTML document to JavaScript engine
     6        https://bugs.webkit.org/show_bug.cgi?id=45271
     7
     8        Replaces script line number with TextPosition structure.
     9
     10        * src/WebFrameImpl.cpp:
     11        (WebKit::WebFrameImpl::executeScript):
     12        (WebKit::WebFrameImpl::executeScriptInIsolatedWorld):
     13        (WebKit::WebFrameImpl::executeScriptAndReturnValue):
     14
    1152010-10-20  John Abd-El-Malek  <jam@chromium.org>
    216
  • trunk/WebKit/chromium/src/WebFrameImpl.cpp

    r70143 r70165  
    754754void WebFrameImpl::executeScript(const WebScriptSource& source)
    755755{
     756    TextPosition1 position(WTF::OneBasedNumber::fromOneBasedInt(source.startLine), WTF::OneBasedNumber::base());
    756757    m_frame->script()->executeScript(
    757         ScriptSourceCode(source.code, source.url, source.startLine));
     758        ScriptSourceCode(source.code, source.url, position));
    758759}
    759760
     
    765766
    766767    for (unsigned i = 0; i < numSources; ++i) {
     768        TextPosition1 position(WTF::OneBasedNumber::fromOneBasedInt(sourcesIn[i].startLine), WTF::OneBasedNumber::base());
    767769        sources.append(ScriptSourceCode(
    768             sourcesIn[i].code, sourcesIn[i].url, sourcesIn[i].startLine));
     770            sourcesIn[i].code, sourcesIn[i].url, position));
    769771    }
    770772
     
    818820    const WebScriptSource& source)
    819821{
     822    TextPosition1 position(WTF::OneBasedNumber::fromOneBasedInt(source.startLine), WTF::OneBasedNumber::base());
    820823    return m_frame->script()->executeScript(
    821         ScriptSourceCode(source.code, source.url, source.startLine)).v8Value();
     824        ScriptSourceCode(source.code, source.url, position)).v8Value();
    822825}
    823826
Note: See TracChangeset for help on using the changeset viewer.