Changeset 70451 in webkit


Ignore:
Timestamp:
Oct 25, 2010 7:15:43 AM (14 years ago)
Author:
caseq@chromium.org
Message:

2010-10-25 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-25 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-25 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:
3 added
32 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/ChangeLog

    r70434 r70451  
     12010-10-25  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-24  Kwang Yul Seo  <skyul@company100.net>
    237
  • trunk/JavaScriptCore/GNUmakefile.am

    r70198 r70451  
    519519        JavaScriptCore/wtf/text/StringImpl.h \
    520520        JavaScriptCore/wtf/text/StringStatics.cpp \
     521        JavaScriptCore/wtf/text/TextPosition.h \
    521522        JavaScriptCore/wtf/text/WTFString.cpp \
    522523        JavaScriptCore/wtf/text/WTFString.h \
  • trunk/JavaScriptCore/JavaScriptCore.gypi

    r70198 r70451  
    462462            'wtf/text/StringImpl.h',
    463463            'wtf/text/StringStatics.cpp',
     464            'wtf/text/TextPosition.h',
    464465            'wtf/text/WTFString.cpp',
    465466            'wtf/text/WTFString.h',
  • trunk/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj

    r70198 r70451  
    556556                E1EF79AA0CE97BA60088D500 /* UTF8.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1EF79A80CE97BA60088D500 /* UTF8.cpp */; };
    557557                E48E0F2D0F82151700A8CA37 /* FastAllocBase.h in Headers */ = {isa = PBXBuildFile; fileRef = E48E0F2C0F82151700A8CA37 /* FastAllocBase.h */; settings = {ATTRIBUTES = (Private, ); }; };
     558                F3BD31ED126735770065467F /* TextPosition.h in Headers */ = {isa = PBXBuildFile; fileRef = F3BD31D0126730180065467F /* TextPosition.h */; settings = {ATTRIBUTES = (Private, ); }; };
    558559                FE1B447A0ECCD73B004F4DD1 /* StdLibExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = FE1B44790ECCD73B004F4DD1 /* StdLibExtras.h */; settings = {ATTRIBUTES = (Private, ); }; };
    559560/* End PBXBuildFile section */
     
    11451146                E1EF79A90CE97BA60088D500 /* UTF8.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UTF8.h; sourceTree = "<group>"; };
    11461147                E48E0F2C0F82151700A8CA37 /* FastAllocBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FastAllocBase.h; sourceTree = "<group>"; };
     1148                F3BD31D0126730180065467F /* TextPosition.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TextPosition.h; path = text/TextPosition.h; sourceTree = "<group>"; };
    11471149                F5BB2BC5030F772101FCFE1D /* Completion.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = Completion.h; sourceTree = "<group>"; tabWidth = 8; };
    11481150                F5C290E60284F98E018635CA /* JavaScriptCorePrefix.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = JavaScriptCorePrefix.h; sourceTree = "<group>"; tabWidth = 8; };
     
    18611863                                86B99AE2117E578100DF5A90 /* StringImplBase.h */,
    18621864                                8626BECE11928E3900782FAB /* StringStatics.cpp */,
     1865                                F3BD31D0126730180065467F /* TextPosition.h */,
    18631866                                868BFA15117CF19900B908B1 /* WTFString.cpp */,
    18641867                                868BFA16117CF19900B908B1 /* WTFString.h */,
     
    23502353                                A730B6121250068F009D25B1 /* StrictEvalActivation.h in Headers */,
    23512354                                933F5CDC1269229B0049191E /* NullPtr.h in Headers */,
     2355                                F3BD31ED126735770065467F /* TextPosition.h in Headers */,
    23522356                        );
    23532357                        runOnlyForDeploymentPostprocessing = 0;
  • trunk/WebCore/ChangeLog

    r70446 r70451  
     12010-10-25  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-24  Pavel Feldman  <pfeldman@chromium.org>
    280
  • trunk/WebCore/bindings/js/ScriptSourceCode.h

    r70181 r70451  
    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

    r70181 r70451  
    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

    r70300 r70451  
    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

    r70181 r70451  
    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

    r70181 r70451  
    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

    r70181 r70451  
    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

    r70181 r70451  
    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

    r70181 r70451  
    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

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

    r70181 r70451  
    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

    r70181 r70451  
    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

    r70181 r70451  
    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

    r70181 r70451  
    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

    r70181 r70451  
    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

    r70181 r70451  
    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

    r70181 r70451  
    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

    r70181 r70451  
    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
     134        // This method is introduced to temporary legalize existing line/column
     135        // coordinate bug: it is believed that numbers that originally were zero-based
     136        // eventually becomes one-based.
     137        // FIXME: Investigate and get rid of this method.
     138        TextPosition1 textPositionOneBased() const;
    131139
    132140#if USE(QXMLSTREAM)
     
    209217        CachedResourceHandle<CachedScript> m_pendingScript;
    210218        RefPtr<Element> m_scriptElement;
    211         int m_scriptStartLine;
     219        TextPosition1 m_scriptStartPosition;
    212220
    213221        bool m_parsingFragment;
  • trunk/WebCore/dom/XMLDocumentParserLibxml2.cpp

    r70181 r70451  
    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

    r70181 r70451  
    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
     242// This method incorrectly reinterprets zero-base lineNumber method as one-based number.
     243// FIXME: This error is kept for compatibility. We should fix it eventually.
     244TextPosition1 XMLDocumentParser::textPositionOneBased() const
     245{
     246    return TextPosition1(WTF::OneBasedNumber::fromOneBasedInt(lineNumber()), WTF::OneBasedNumber::fromOneBasedInt(columnNumber()));
     247}
     248
    237249void XMLDocumentParser::stopParsing()
    238250{
     
    519531    ScriptElement* scriptElement = toScriptElement(newElement.get());
    520532    if (scriptElement)
    521         m_scriptStartLine = lineNumber();
     533        m_scriptStartPosition = textPositionOneBased();
    522534
    523535    m_currentNode->deprecatedParserAddChild(newElement.get());
     
    596608                m_scriptElement = 0;
    597609        } else
    598             m_view->frame()->script()->executeScript(ScriptSourceCode(scriptElement->scriptContent(), document()->url(), m_scriptStartLine));
     610            m_view->frame()->script()->executeScript(ScriptSourceCode(scriptElement->scriptContent(), document()->url(), m_scriptStartPosition));
    599611    }
    600612    m_requestingScript = false;
     
    717729}
    718730}
    719 
  • trunk/WebCore/html/parser/HTMLDocumentParser.cpp

    r70181 r70451  
    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

    r70181 r70451  
    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

    r70282 r70451  
    100100    }
    101101    errorOccurred = false;
    102     return ScriptSourceCode(script.element()->textContent(), documentURLForScriptExecution(m_document), script.startingLineNumber());
     102    return ScriptSourceCode(script.element()->textContent(), documentURLForScriptExecution(m_document), script.startingPosition());
    103103}
    104104
     
    173173// This function should match 10.2.5.11 "An end tag whose tag name is 'script'"
    174174// Script handling lives outside the tree builder to keep the each class simple.
    175 bool HTMLScriptRunner::execute(PassRefPtr<Element> scriptElement, int startLine)
     175bool HTMLScriptRunner::execute(PassRefPtr<Element> scriptElement, const TextPosition1& scriptStartPosition)
    176176{
    177177    ASSERT(scriptElement);
     
    179179
    180180    // Try to execute the script given to us.
    181     runScript(scriptElement.get(), startLine);
     181    runScript(scriptElement.get(), scriptStartPosition);
    182182
    183183    if (haveParsingBlockingScript()) {
     
    291291// This method is meant to match the HTML5 definition of "running a script"
    292292// http://www.whatwg.org/specs/web-apps/current-work/multipage/scripting-1.html#running-a-script
    293 void HTMLScriptRunner::runScript(Element* script, int startingLineNumber)
     293void HTMLScriptRunner::runScript(Element* script, const TextPosition1& scriptStartPosition)
    294294{
    295295    ASSERT(m_document);
     
    318318            // ASSERT(document()->haveStylesheetsLoaded());
    319319            ASSERT(isExecutingScript());
    320             ScriptSourceCode sourceCode(script->textContent(), documentURLForScriptExecution(m_document), startingLineNumber);
     320            ScriptSourceCode sourceCode(script->textContent(), documentURLForScriptExecution(m_document), scriptStartPosition);
    321321            executeScript(sourceCode);
    322322        }
  • trunk/WebCore/html/parser/HTMLScriptRunner.h

    r70181 r70451  
    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

    r70293 r70451  
    5656
    5757static const int uninitializedLineNumberValue = -1;
     58
     59static TextPosition1 uninitializedPositionValue1()
     60{
     61    return TextPosition1(WTF::OneBasedNumber::fromOneBasedInt(-1), WTF::OneBasedNumber::base());
     62}
    5863
    5964namespace {
     
    341346    , m_originalInsertionMode(InitialMode)
    342347    , m_tokenizer(tokenizer)
    343     , m_scriptToProcessStartLine(uninitializedLineNumberValue)
    344     , m_lastScriptElementStartLine(uninitializedLineNumberValue)
     348    , m_scriptToProcessStartPosition(uninitializedPositionValue1())
     349    , m_lastScriptElementStartPosition(TextPosition0::belowRangePosition())
    345350    , m_usePreHTML5ParserQuirks(usePreHTML5ParserQuirks)
    346351    , m_hasPendingForeignInsertionModeSteps(false)
     
    360365    , m_originalInsertionMode(InitialMode)
    361366    , m_tokenizer(tokenizer)
    362     , m_scriptToProcessStartLine(uninitializedLineNumberValue)
    363     , m_lastScriptElementStartLine(uninitializedLineNumberValue)
     367    , m_scriptToProcessStartPosition(uninitializedPositionValue1())
     368    , m_lastScriptElementStartPosition(TextPosition0::belowRangePosition())
    364369    , m_usePreHTML5ParserQuirks(usePreHTML5ParserQuirks)
    365370    , m_hasPendingForeignInsertionModeSteps(false)
     
    424429}
    425430
    426 PassRefPtr<Element> HTMLTreeBuilder::takeScriptToProcess(int& scriptStartLine)
     431PassRefPtr<Element> HTMLTreeBuilder::takeScriptToProcess(TextPosition1& scriptStartPosition)
    427432{
    428433    // Unpause ourselves, callers may pause us again when processing the script.
     
    431436    // before running scripts.
    432437    m_isPaused = false;
    433     scriptStartLine = m_scriptToProcessStartLine;
    434     m_scriptToProcessStartLine = uninitializedLineNumberValue;
     438    scriptStartPosition = m_scriptToProcessStartPosition;
     439    m_scriptToProcessStartPosition = uninitializedPositionValue1();
    435440    return m_scriptToProcess.release();
    436441}
     
    21912196            ASSERT(m_tree.currentElement()->hasTagName(scriptTag));
    21922197            m_scriptToProcess = m_tree.currentElement();
    2193             m_scriptToProcessStartLine = m_lastScriptElementStartLine + 1;
     2198            m_scriptToProcessStartPosition = WTF::toOneBasedTextPosition(m_lastScriptElementStartPosition);
    21942199            m_tree.openElements()->pop();
    21952200            if (isParsingFragment() && m_fragmentContext.scriptingPermission() == FragmentScriptingNotAllowed)
     
    27702775    m_tokenizer->setState(HTMLTokenizer::ScriptDataState);
    27712776    m_originalInsertionMode = m_insertionMode;
    2772     m_lastScriptElementStartLine = m_tokenizer->lineNumber();
     2777
     2778    TextPosition0 position = TextPosition0(WTF::ZeroBasedNumber::fromZeroBasedInt(m_tokenizer->lineNumber()), WTF::ZeroBasedNumber::base());
     2779    m_lastScriptElementStartPosition = position;
     2780
    27732781    setInsertionMode(TextMode);
    27742782}
  • trunk/WebCore/html/parser/HTMLTreeBuilder.h

    r70293 r70451  
    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.
     
    249250
    250251    RefPtr<Element> m_scriptToProcess; // <script> tag which needs processing before resuming the parser.
    251     int m_scriptToProcessStartLine; // Starting line number of the script tag needing processing.
     252    TextPosition1 m_scriptToProcessStartPosition; // Starting line number of the script tag needing processing.
    252253
    253254    // FIXME: We probably want to remove this member.  Originally, it was
    254255    // created to service the legacy tree builder, but it seems to be used for
    255256    // some other things now.
    256     int m_lastScriptElementStartLine;
     257    TextPosition0 m_lastScriptElementStartPosition;
    257258
    258259    bool m_usePreHTML5ParserQuirks;
  • trunk/WebKit/chromium/ChangeLog

    r70438 r70451  
     12010-10-25  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  Kinuko Yasuda  <kinuko@chromium.org>
    216
  • trunk/WebKit/chromium/src/WebFrameImpl.cpp

    r70181 r70451  
    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.