source: webkit/trunk/JavaScriptCore/parser/SourceProvider.h@ 63273

Last change on this file since 63273 was 63273, checked in by [email protected], 15 years ago

2010-07-13 Oliver Hunt <[email protected]>

Reviewed by Gavin Barraclough.

ES5 requires BOMs to be treated as whitespace
https://bugs.webkit.org/show_bug.cgi?id=42218

Add BOM character to the Lexer's definition of whitespace,
and remove the logic that dealt with stripping BOMs and
caching the cleaned string.

  • parser/Lexer.h: (JSC::Lexer::isWhiteSpace):
  • parser/SourceProvider.h: (JSC::UStringSourceProvider::create): (JSC::UStringSourceProvider::UStringSourceProvider):
  • wtf/text/StringImpl.h:

2010-07-13 Oliver Hunt <[email protected]>

Reviewed by Gavin Barraclough.

ES5 requires BOMs to be treated as whitespace
https://bugs.webkit.org/show_bug.cgi?id=42218

Update the fast/js/removing-Cf-characters to reflect
new behaviour. Update a whole group of sputnik results
that we now pass.

  • fast/js/removing-Cf-characters-expected.txt:
  • fast/js/script-tests/removing-Cf-characters.js:
  • fast/js/sputnik/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.1_T2-expected.txt:
  • fast/js/sputnik/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A1.4_T2-expected.txt:
  • fast/js/sputnik/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.1_T2-expected.txt:
  • fast/js/sputnik/Conformance/07_Lexical_Conventions/7.8_Literals/7.8.5_Regular_Expression_Literals/S7.8.5_A2.4_T2-expected.txt:
  • fast/js/sputnik/Unicode/Unicode_218/S7.1_A2.1_T2-expected.txt:
  • fast/js/sputnik/Unicode/Unicode_218/S7.1_A2.2_T2-expected.txt:
  • fast/js/sputnik/Unicode/Unicode_320/S7.1_A2.1_T2-expected.txt:
  • fast/js/sputnik/Unicode/Unicode_320/S7.1_A2.2_T2-expected.txt:
  • fast/js/sputnik/Unicode/Unicode_410/S7.1_A2.1_T2-expected.txt:
  • fast/js/sputnik/Unicode/Unicode_410/S7.1_A2.2_T2-expected.txt:
  • fast/js/sputnik/Unicode/Unicode_500/S7.1_A2.1_T2-expected.txt:
  • fast/js/sputnik/Unicode/Unicode_500/S7.1_A2.2_T2-expected.txt:
  • fast/js/sputnik/Unicode/Unicode_510/S7.1_A2.1_T2-expected.txt:
  • fast/js/sputnik/Unicode/Unicode_510/S7.1_A2.2_T2-expected.txt:

2010-07-13 Oliver Hunt <[email protected]>

Reviewed by Gavin Barraclough.

ES5 requires BOMs to be treated as whitespace
https://bugs.webkit.org/show_bug.cgi?id=42218

Remove BOM handling logic from WebCore Script objects.

  • bindings/js/StringSourceProvider.h: (WebCore::StringSourceProvider::StringSourceProvider):
  • loader/CachedScript.cpp: (WebCore::CachedScript::CachedScript): (WebCore::CachedScript::script):
  • loader/CachedScript.h:
File size: 3.1 KB
Line 
1/*
2 * Copyright (C) 2008, 2009 Apple Inc. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 *
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution.
13 * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
14 * its contributors may be used to endorse or promote products derived
15 * from this software without specific prior written permission.
16 *
17 * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
18 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
20 * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
21 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
22 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
23 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
24 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */
28
29#ifndef SourceProvider_h
30#define SourceProvider_h
31
32#include "UString.h"
33#include <wtf/RefCounted.h>
34
35namespace JSC {
36
37 class SourceProvider : public RefCounted<SourceProvider> {
38 public:
39 SourceProvider(const UString& url)
40 : m_url(url)
41 , m_validated(false)
42 {
43 }
44 virtual ~SourceProvider() { }
45
46 virtual UString getRange(int start, int end) const = 0;
47 virtual const UChar* data() const = 0;
48 virtual int length() const = 0;
49
50 const UString& url() { return m_url; }
51 intptr_t asID() { return reinterpret_cast<intptr_t>(this); }
52
53 bool isValid() const { return m_validated; }
54 void setValid() { m_validated = true; }
55
56 private:
57 UString m_url;
58 bool m_validated;
59 };
60
61 class UStringSourceProvider : public SourceProvider {
62 public:
63 static PassRefPtr<UStringSourceProvider> create(const UString& source, const UString& url)
64 {
65 return adoptRef(new UStringSourceProvider(source, url));
66 }
67
68 UString getRange(int start, int end) const
69 {
70 return m_source.substr(start, end - start);
71 }
72 const UChar* data() const { return m_source.data(); }
73 int length() const { return m_source.size(); }
74
75 private:
76 UStringSourceProvider(const UString& source, const UString& url)
77 : SourceProvider(url)
78 , m_source(source)
79 {
80 }
81
82 UString m_source;
83 };
84
85} // namespace JSC
86
87#endif // SourceProvider_h
Note: See TracBrowser for help on using the repository browser.