diff options
author | Steve Block <steveblock@google.com> | 2010-08-04 11:41:34 +0100 |
---|---|---|
committer | Steve Block <steveblock@google.com> | 2010-08-09 12:04:44 +0100 |
commit | db14019a23d96bc8a444b6576a5da8bd1cfbc8b0 (patch) | |
tree | 9f793c5b0f5e1f2aca8247158920e2c4bf962bbf /WebCore/html | |
parent | bf916837aa84f1e4b00e6ed6268516c2acd27545 (diff) | |
download | external_webkit-db14019a23d96bc8a444b6576a5da8bd1cfbc8b0.zip external_webkit-db14019a23d96bc8a444b6576a5da8bd1cfbc8b0.tar.gz external_webkit-db14019a23d96bc8a444b6576a5da8bd1cfbc8b0.tar.bz2 |
Merge WebKit at r64523 : Initial merge by git.
Change-Id: Ibb796c6802e757b1d9b40f58205cfbe4da95fcd4
Diffstat (limited to 'WebCore/html')
-rw-r--r-- | WebCore/html/FileThread.cpp | 14 | ||||
-rw-r--r-- | WebCore/html/FileThread.h | 15 | ||||
-rw-r--r-- | WebCore/html/FileThreadTask.h | 134 | ||||
-rw-r--r-- | WebCore/html/HTMLFrameSetElement.cpp | 4 | ||||
-rw-r--r-- | WebCore/html/HTMLInputElement.idl | 2 | ||||
-rw-r--r-- | WebCore/html/HTMLStyleElement.cpp | 39 | ||||
-rw-r--r-- | WebCore/html/HTMLStyleElement.h | 10 | ||||
-rw-r--r-- | WebCore/html/canvas/CanvasRenderingContext.h | 1 | ||||
-rw-r--r-- | WebCore/html/canvas/CanvasRenderingContext2D.cpp | 27 | ||||
-rw-r--r-- | WebCore/html/canvas/CanvasRenderingContext2D.h | 1 | ||||
-rw-r--r-- | WebCore/html/canvas/WebGLRenderingContext.h | 1 |
11 files changed, 114 insertions, 134 deletions
diff --git a/WebCore/html/FileThread.cpp b/WebCore/html/FileThread.cpp index 02b1718..3a3413c 100644 --- a/WebCore/html/FileThread.cpp +++ b/WebCore/html/FileThread.cpp @@ -61,7 +61,7 @@ bool FileThread::start() void FileThread::stop() { - return m_queue.kill(); + m_queue.kill(); } void FileThread::postTask(PassOwnPtr<Task> task) @@ -69,17 +69,17 @@ void FileThread::postTask(PassOwnPtr<Task> task) m_queue.append(task); } -class SameFilePredicate { +class SameInstancePredicate { public: - SameFilePredicate(const FileStream* stream) : m_stream(stream) { } - bool operator()(FileThread::Task* task) const { return task->stream() == m_stream; } + SameInstancePredicate(const void* instance) : m_instance(instance) { } + bool operator()(FileThread::Task* task) const { return task->instance() == m_instance; } private: - const FileStream* m_stream; + const void* m_instance; }; -void FileThread::unscheduleTasks(const FileStream* stream) +void FileThread::unscheduleTasks(const void* instance) { - SameFilePredicate predicate(stream); + SameInstancePredicate predicate(instance); m_queue.removeIf(predicate); } diff --git a/WebCore/html/FileThread.h b/WebCore/html/FileThread.h index d27273a..2eba98e 100644 --- a/WebCore/html/FileThread.h +++ b/WebCore/html/FileThread.h @@ -44,7 +44,11 @@ class FileStream; class FileThread : public ThreadSafeShared<FileThread> { public: - static PassRefPtr<FileThread> create() { return adoptRef(new FileThread()); } + static PassRefPtr<FileThread> create() + { + return adoptRef(new FileThread()); + } + ~FileThread(); bool start(); @@ -54,14 +58,15 @@ public: public: virtual ~Task() { } virtual void performTask() = 0; - FileStream* stream() const { return m_stream; } + void* instance() const { return m_instance; } protected: - Task(FileStream* stream) : m_stream(stream) { } - FileStream* m_stream; + Task(void* instance) : m_instance(instance) { } + void* m_instance; }; void postTask(PassOwnPtr<Task> task); - void unscheduleTasks(const FileStream*); + + void unscheduleTasks(const void* instance); private: FileThread(); diff --git a/WebCore/html/FileThreadTask.h b/WebCore/html/FileThreadTask.h index de11798..09b647f 100644 --- a/WebCore/html/FileThreadTask.h +++ b/WebCore/html/FileThreadTask.h @@ -32,73 +32,55 @@ #define FileThreadTask_h #include "CrossThreadCopier.h" +#include "CrossThreadTask.h" #include "FileThread.h" -#include <memory> #include <wtf/PassOwnPtr.h> #include <wtf/PassRefPtr.h> -#include <wtf/TypeTraits.h> namespace WebCore { -// Traits for the Task. -template<typename T> struct FileThreadTaskTraits { - typedef const T& ParamType; -}; - -template<typename T> struct FileThreadTaskTraits<T*> { - typedef T* ParamType; -}; - -template<typename T> struct FileThreadTaskTraits<PassRefPtr<T> > { - typedef PassRefPtr<T> ParamType; -}; - -template<typename T> struct FileThreadTaskTraits<PassOwnPtr<T> > { - typedef PassOwnPtr<T> ParamType; -}; - -template<typename R> +template<typename R, typename T> class FileThreadTask0 : public FileThread::Task { public: - typedef R (FileStream::*Method)(); - typedef FileThreadTask0<R> FileThreadTask; + typedef R (T::*Method)(); + typedef FileThreadTask0<R, T> FileThreadTaskImpl; - static PassOwnPtr<FileThreadTask> create(FileStream* stream, Method method) + static PassOwnPtr<FileThreadTaskImpl> create(T* instance, Method method) { - return new FileThreadTask(stream, method); + return new FileThreadTaskImpl(instance, method); } private: - FileThreadTask0(FileStream* stream, Method method) - : FileThread::Task(stream) + FileThreadTask0(T* instance, Method method) + : FileThread::Task(instance) , m_method(method) { } virtual void performTask() { - (*stream().*m_method)(); + (*static_cast<T*>(instance()).*m_method)(); } private: Method m_method; }; -template<typename R, typename P1, typename MP1> +template<typename R, typename T, typename P1, typename MP1> class FileThreadTask1 : public FileThread::Task { public: - typedef R (FileStream::*Method)(MP1); - typedef FileThreadTask1<R, P1, MP1> FileThreadTask; - typedef typename FileThreadTaskTraits<P1>::ParamType Param1; + typedef R (T::*Method)(MP1); + typedef FileThreadTask1<R, T, P1, MP1> FileThreadTaskImpl; + typedef typename CrossThreadTaskTraits<P1>::ParamType Param1; - static PassOwnPtr<FileThreadTask> create(FileStream* stream, Method method, Param1 parameter1) + static PassOwnPtr<FileThreadTaskImpl> create(T* instance, Method method, Param1 parameter1) { - return new FileThreadTask(stream, method, parameter1); + return new FileThreadTaskImpl(instance, method, parameter1); } private: - FileThreadTask1(FileStream* stream, Method method, Param1 parameter1) - : FileThread::Task(stream) + FileThreadTask1(T* instance, Method method, Param1 parameter1) + : FileThread::Task(instance) , m_method(method) , m_parameter1(parameter1) { @@ -106,7 +88,7 @@ private: virtual void performTask() { - (*stream().*m_method)(m_parameter1); + (*static_cast<T*>(instance()).*m_method)(m_parameter1); } private: @@ -114,22 +96,22 @@ private: P1 m_parameter1; }; -template<typename R, typename P1, typename MP1, typename P2, typename MP2> +template<typename R, typename T, typename P1, typename MP1, typename P2, typename MP2> class FileThreadTask2 : public FileThread::Task { public: - typedef R (FileStream::*Method)(MP1, MP2); - typedef FileThreadTask2<R, P1, MP1, P2, MP2> FileThreadTask; - typedef typename FileThreadTaskTraits<P1>::ParamType Param1; - typedef typename FileThreadTaskTraits<P2>::ParamType Param2; + typedef R (T::*Method)(MP1, MP2); + typedef FileThreadTask2<R, T, P1, MP1, P2, MP2> FileThreadTaskImpl; + typedef typename CrossThreadTaskTraits<P1>::ParamType Param1; + typedef typename CrossThreadTaskTraits<P2>::ParamType Param2; - static PassOwnPtr<FileThreadTask> create(FileStream* stream, Method method, Param1 parameter1, Param2 parameter2) + static PassOwnPtr<FileThreadTaskImpl> create(T* instance, Method method, Param1 parameter1, Param2 parameter2) { - return new FileThreadTask(stream, method, parameter1, parameter2); + return new FileThreadTaskImpl(instance, method, parameter1, parameter2); } private: - FileThreadTask2(FileStream* stream, Method method, Param1 parameter1, Param2 parameter2) - : FileThread::Task(stream) + FileThreadTask2(T* instance, Method method, Param1 parameter1, Param2 parameter2) + : FileThread::Task(instance) , m_method(method) , m_parameter1(parameter1) , m_parameter2(parameter2) @@ -138,7 +120,7 @@ private: virtual void performTask() { - (*stream().*m_method)(m_parameter1, m_parameter2); + (*static_cast<T*>(instance()).*m_method)(m_parameter1, m_parameter2); } private: @@ -147,23 +129,23 @@ private: P2 m_parameter2; }; -template<typename R, typename P1, typename MP1, typename P2, typename MP2, typename P3, typename MP3> +template<typename R, typename T, typename P1, typename MP1, typename P2, typename MP2, typename P3, typename MP3> class FileThreadTask3 : public FileThread::Task { public: - typedef R (FileStream::*Method)(MP1, MP2, MP3); - typedef FileThreadTask3<R, P1, MP1, P2, MP2, P3, MP3> FileThreadTask; - typedef typename FileThreadTaskTraits<P1>::ParamType Param1; - typedef typename FileThreadTaskTraits<P2>::ParamType Param2; - typedef typename FileThreadTaskTraits<P3>::ParamType Param3; + typedef void (T::*Method)(MP1, MP2, MP3); + typedef FileThreadTask3<R, T, P1, MP1, P2, MP2, P3, MP3> FileThreadTaskImpl; + typedef typename CrossThreadTaskTraits<P1>::ParamType Param1; + typedef typename CrossThreadTaskTraits<P2>::ParamType Param2; + typedef typename CrossThreadTaskTraits<P3>::ParamType Param3; - static PassOwnPtr<FileThreadTask> create(FileStream* stream, Method method, Param1 parameter1, Param2 parameter2, Param3 parameter3) + static PassOwnPtr<FileThreadTaskImpl> create(T* instance, Method method, Param1 parameter1, Param2 parameter2, Param3 parameter3) { - return new FileThreadTask(stream, method, parameter1, parameter2, parameter3); + return new FileThreadTaskImpl(instance, method, parameter1, parameter2, parameter3); } private: - FileThreadTask3(FileStream* stream, Method method, Param1 parameter1, Param2 parameter2, Param3 parameter3) - : FileThread::Task(stream) + FileThreadTask3(T* instance, Method method, Param1 parameter1, Param2 parameter2, Param3 parameter3) + : FileThread::Task(instance) , m_method(method) , m_parameter1(parameter1) , m_parameter2(parameter2) @@ -173,7 +155,7 @@ private: virtual void performTask() { - (*stream().*m_method)(m_parameter1, m_parameter2, m_parameter3); + (*static_cast<T*>(instance()).*m_method)(m_parameter1, m_parameter2, m_parameter3); } private: @@ -183,56 +165,56 @@ private: P3 m_parameter3; }; -template<typename R> +template<typename R, typename T> PassOwnPtr<FileThread::Task> createFileThreadTask( - FileStream* const callee, - R (FileStream::*method)()); + T* const callee, + R (T::*method)()); -template<typename R> +template<typename R, typename T> PassOwnPtr<FileThread::Task> createFileThreadTask( - FileStream* const callee, - R (FileStream::*method)()) + T* const callee, + R (T::*method)()) { - return FileThreadTask0<R>::create( + return FileThreadTask0<R, T>::create( callee, method); } -template<typename R, typename P1, typename MP1> +template<typename R, typename T, typename P1, typename MP1> PassOwnPtr<FileThread::Task> createFileThreadTask( - FileStream* const callee, - R (FileStream::*method)(MP1), + T* const callee, + R (T::*method)(MP1), const P1& parameter1) { - return FileThreadTask1<R, typename CrossThreadCopier<P1>::Type, MP1>::create( + return FileThreadTask1<R, T, typename CrossThreadCopier<P1>::Type, MP1>::create( callee, method, CrossThreadCopier<P1>::copy(parameter1)); } -template<typename R, typename P1, typename MP1, typename P2, typename MP2> +template<typename R, typename T, typename P1, typename MP1, typename P2, typename MP2> PassOwnPtr<FileThread::Task> createFileThreadTask( - FileStream* const callee, - R (FileStream::*method)(MP1, MP2), + T* const callee, + R (T::*method)(MP1, MP2), const P1& parameter1, const P2& parameter2) { - return FileThreadTask2<R, typename CrossThreadCopier<P1>::Type, MP1, typename CrossThreadCopier<P2>::Type, MP2>::create( + return FileThreadTask2<R, T, typename CrossThreadCopier<P1>::Type, MP1, typename CrossThreadCopier<P2>::Type, MP2>::create( callee, method, CrossThreadCopier<P1>::copy(parameter1), CrossThreadCopier<P2>::copy(parameter2)); } -template<typename R, typename P1, typename MP1, typename P2, typename MP2, typename P3, typename MP3> +template<typename R, typename T, typename P1, typename MP1, typename P2, typename MP2, typename P3, typename MP3> PassOwnPtr<FileThread::Task> createFileThreadTask( - FileStream* const callee, - R (FileStream::*method)(MP1, MP2, MP3), + T* const callee, + R (T::*method)(MP1, MP2, MP3), const P1& parameter1, const P2& parameter2, const P3& parameter3) { - return FileThreadTask3<R, typename CrossThreadCopier<P1>::Type, MP1, typename CrossThreadCopier<P2>::Type, MP2, typename CrossThreadCopier<P3>::Type, MP3>::create( + return FileThreadTask3<R, T, typename CrossThreadCopier<P1>::Type, MP1, typename CrossThreadCopier<P2>::Type, MP2, typename CrossThreadCopier<P3>::Type, MP3>::create( callee, method, CrossThreadCopier<P1>::copy(parameter1), diff --git a/WebCore/html/HTMLFrameSetElement.cpp b/WebCore/html/HTMLFrameSetElement.cpp index 1b38a1d..d0f84ef 100644 --- a/WebCore/html/HTMLFrameSetElement.cpp +++ b/WebCore/html/HTMLFrameSetElement.cpp @@ -208,10 +208,14 @@ void HTMLFrameSetElement::recalcStyle(StyleChange ch) { if (needsStyleRecalc() && renderer()) { renderer()->setNeedsLayout(true); +<<<<<<< HEAD #ifdef ANDROID_FLATTEN_FRAMESET static_cast<RenderFrameSet*>(renderer())->setGridNeedsLayout(); #endif setNeedsStyleRecalc(NoStyleChange); +======= + clearNeedsStyleRecalc(); +>>>>>>> webkit.org at r64523 } HTMLElement::recalcStyle(ch); } diff --git a/WebCore/html/HTMLInputElement.idl b/WebCore/html/HTMLInputElement.idl index c66e775..c726caa 100644 --- a/WebCore/html/HTMLInputElement.idl +++ b/WebCore/html/HTMLInputElement.idl @@ -100,7 +100,7 @@ module html { readonly attribute NodeList labels; #if defined(ENABLE_INPUT_SPEECH) && ENABLE_INPUT_SPEECH - attribute [Reflect] boolean speech; + attribute [Reflect, EnabledAtRuntime] boolean speech; #endif }; diff --git a/WebCore/html/HTMLStyleElement.cpp b/WebCore/html/HTMLStyleElement.cpp index 4fa08ad..1066c75 100644 --- a/WebCore/html/HTMLStyleElement.cpp +++ b/WebCore/html/HTMLStyleElement.cpp @@ -36,13 +36,9 @@ using namespace HTMLNames; inline HTMLStyleElement::HTMLStyleElement(const QualifiedName& tagName, Document* document, bool createdByParser) : HTMLElement(tagName, document) - , m_loading(false) - , m_createdByParser(createdByParser) - , m_startLineNumber(0) + , StyleElement(document, createdByParser) { ASSERT(hasTagName(styleTag)); - if (createdByParser && document && document->scriptableDocumentParser()) - m_startLineNumber = document->scriptableDocumentParser()->lineNumber(); } PassRefPtr<HTMLStyleElement> HTMLStyleElement::create(const QualifiedName& tagName, Document* document, bool createdByParser) @@ -62,32 +58,25 @@ void HTMLStyleElement::parseMappedAttribute(Attribute* attr) void HTMLStyleElement::finishParsingChildren() { - StyleElement::process(this, m_startLineNumber); - StyleElement::sheet(this); - m_createdByParser = false; + StyleElement::finishParsingChildren(this); HTMLElement::finishParsingChildren(); } void HTMLStyleElement::insertedIntoDocument() { HTMLElement::insertedIntoDocument(); - - document()->addStyleSheetCandidateNode(this, m_createdByParser); - if (!m_createdByParser) - StyleElement::insertedIntoDocument(document(), this); + StyleElement::insertedIntoDocument(document(), this); } void HTMLStyleElement::removedFromDocument() { HTMLElement::removedFromDocument(); - document()->removeStyleSheetCandidateNode(this); - StyleElement::removedFromDocument(document()); + StyleElement::removedFromDocument(document(), this); } void HTMLStyleElement::childrenChanged(bool changedByParser, Node* beforeChange, Node* afterChange, int childCountDelta) { - if (!changedByParser) - StyleElement::process(this, 0); + StyleElement::childrenChanged(this); HTMLElement::childrenChanged(changedByParser, beforeChange, afterChange, childCountDelta); } @@ -96,24 +85,6 @@ StyleSheet* HTMLStyleElement::sheet() return StyleElement::sheet(this); } -bool HTMLStyleElement::isLoading() const -{ - if (m_loading) - return true; - if (!m_sheet) - return false; - return static_cast<CSSStyleSheet *>(m_sheet.get())->isLoading(); -} - -bool HTMLStyleElement::sheetLoaded() -{ - if (!isLoading()) { - document()->removePendingSheet(); - return true; - } - return false; -} - const AtomicString& HTMLStyleElement::media() const { return getAttribute(mediaAttr); diff --git a/WebCore/html/HTMLStyleElement.h b/WebCore/html/HTMLStyleElement.h index 10f5b10..07b5bd9 100644 --- a/WebCore/html/HTMLStyleElement.h +++ b/WebCore/html/HTMLStyleElement.h @@ -53,19 +53,13 @@ private: virtual void finishParsingChildren(); - virtual bool isLoading() const; - virtual bool sheetLoaded(); - - virtual void setLoading(bool loading) { m_loading = loading; } + virtual bool isLoading() const { return StyleElement::isLoading(); } + virtual bool sheetLoaded() { return StyleElement::sheetLoaded(document()); } virtual void addSubresourceAttributeURLs(ListHashSet<KURL>&) const; virtual const AtomicString& media() const; virtual const AtomicString& type() const; - - bool m_loading; - bool m_createdByParser; - int m_startLineNumber; }; } //namespace diff --git a/WebCore/html/canvas/CanvasRenderingContext.h b/WebCore/html/canvas/CanvasRenderingContext.h index f752377..2ee1693 100644 --- a/WebCore/html/canvas/CanvasRenderingContext.h +++ b/WebCore/html/canvas/CanvasRenderingContext.h @@ -46,6 +46,7 @@ namespace WebCore { virtual bool is2d() const { return false; } virtual bool is3d() const { return false; } + virtual bool isAccelerated() const { return false; } private: HTMLCanvasElement* m_canvas; diff --git a/WebCore/html/canvas/CanvasRenderingContext2D.cpp b/WebCore/html/canvas/CanvasRenderingContext2D.cpp index 6c3d372..3b05348 100644 --- a/WebCore/html/canvas/CanvasRenderingContext2D.cpp +++ b/WebCore/html/canvas/CanvasRenderingContext2D.cpp @@ -164,6 +164,23 @@ void CanvasRenderingContext2D::restore() c->restore(); } +void CanvasRenderingContext2D::setAllAttributesToDefault() +{ + state().m_globalAlpha = 1; + state().m_shadowOffset = FloatSize(); + state().m_shadowBlur = 0; + state().m_shadowColor = Color::transparent; + state().m_globalComposite = CompositeSourceOver; + + GraphicsContext* context = drawingContext(); + if (!context) + return; + + context->setShadow(FloatSize(), 0, Color::transparent, DeviceColorSpace); + context->setAlpha(1); + context->setCompositeOperation(CompositeSourceOver); +} + CanvasStyle* CanvasRenderingContext2D::strokeStyle() const { return state().m_strokeStyle.get(); @@ -790,14 +807,18 @@ void CanvasRenderingContext2D::clearRect(float x, float y, float width, float he { if (!validateRectForCanvas(x, y, width, height)) return; - GraphicsContext* c = drawingContext(); - if (!c) + GraphicsContext* context = drawingContext(); + if (!context) return; if (!state().m_invertibleCTM) return; FloatRect rect(x, y, width, height); + + save(); + setAllAttributesToDefault(); willDraw(rect); - c->clearRect(rect); + context->clearRect(rect); + restore(); } void CanvasRenderingContext2D::fillRect(float x, float y, float width, float height) diff --git a/WebCore/html/canvas/CanvasRenderingContext2D.h b/WebCore/html/canvas/CanvasRenderingContext2D.h index fb5f27a..22ed7fc 100644 --- a/WebCore/html/canvas/CanvasRenderingContext2D.h +++ b/WebCore/html/canvas/CanvasRenderingContext2D.h @@ -104,6 +104,7 @@ public: void save(); void restore(); + void setAllAttributesToDefault(); void scale(float sx, float sy); void rotate(float angleInRadians); diff --git a/WebCore/html/canvas/WebGLRenderingContext.h b/WebCore/html/canvas/WebGLRenderingContext.h index fa9ffdb..017570b 100644 --- a/WebCore/html/canvas/WebGLRenderingContext.h +++ b/WebCore/html/canvas/WebGLRenderingContext.h @@ -58,6 +58,7 @@ class WebKitCSSMatrix; virtual ~WebGLRenderingContext(); virtual bool is3d() const { return true; } + virtual bool isAccelerated() const { return true; } // Helper to return the size in bytes of OpenGL data types // like GL_FLOAT, GL_INT, etc. |