Diff
Modified: trunk/Source/WebCore/ChangeLog (200248 => 200249)
--- trunk/Source/WebCore/ChangeLog 2016-04-29 16:54:36 UTC (rev 200248)
+++ trunk/Source/WebCore/ChangeLog 2016-04-29 17:05:46 UTC (rev 200249)
@@ -1,3 +1,37 @@
+2016-04-29 Brady Eidson <beid...@apple.com>
+
+ Add a default ".isolatedCopy()" specialization to CrossThreadCopier, and other small cleanup.
+ https://bugs.webkit.org/show_bug.cgi?id=157185
+
+ Reviewed by Anders Carlsson.
+
+ No new tests (Code cleanup, no change in behavior).
+
+ * platform/CrossThreadCopier.cpp:
+ (WebCore::IndexedDB::TransactionMode>::copy): Deleted.
+ (WebCore::IndexedDB::CursorDirection>::copy): Deleted.
+ (WebCore::IndexedDB::CursorType>::copy): Deleted.
+ (WebCore::IDBGetResult>::copy): Deleted.
+ (WebCore::IDBKeyData>::copy): Deleted.
+ (WebCore::IDBKeyRangeData>::copy): Deleted.
+ (WebCore::IDBDatabaseInfo>::copy): Deleted.
+ (WebCore::IDBDatabaseIdentifier>::copy): Deleted.
+ (WebCore::IDBTransactionInfo>::copy): Deleted.
+ (WebCore::IDBResourceIdentifier>::copy): Deleted.
+ (WebCore::IDBError>::copy): Deleted.
+ (WebCore::IDBObjectStoreInfo>::copy): Deleted.
+ (WebCore::IDBIndexInfo>::copy): Deleted.
+ (WebCore::IDBCursorInfo>::copy): Deleted.
+ (WebCore::IDBValue>::copy): Deleted.
+
+ * platform/CrossThreadCopier.h:
+ (WebCore::AllowCrossThreadAccessWrapper::AllowCrossThreadAccessWrapper): Deleted dead code.
+ (WebCore::AllowCrossThreadAccessWrapper::value): Deleted dead code.
+ (WebCore::AllowCrossThreadAccess): Deleted dead code.
+ (WebCore::AllowAccessLaterWrapper::AllowAccessLaterWrapper): Deleted dead code.
+ (WebCore::AllowAccessLaterWrapper::value): Deleted dead code.
+ (WebCore::AllowAccessLater): Deleted dead code.
+
2016-04-29 Simon Fraser <simon.fra...@apple.com>
Wheel Event Not Fired For `body,html { height:100% }`
Modified: trunk/Source/WebCore/platform/CrossThreadCopier.cpp (200248 => 200249)
--- trunk/Source/WebCore/platform/CrossThreadCopier.cpp 2016-04-29 16:54:36 UTC (rev 200248)
+++ trunk/Source/WebCore/platform/CrossThreadCopier.cpp 2016-04-29 17:05:46 UTC (rev 200249)
@@ -43,21 +43,6 @@
#include <wtf/Assertions.h>
#include <wtf/text/WTFString.h>
-#if ENABLE(INDEXED_DATABASE)
-#include "IDBCursorInfo.h"
-#include "IDBDatabaseIdentifier.h"
-#include "IDBDatabaseInfo.h"
-#include "IDBError.h"
-#include "IDBGetResult.h"
-#include "IDBIndexInfo.h"
-#include "IDBKeyData.h"
-#include "IDBKeyRangeData.h"
-#include "IDBObjectStoreInfo.h"
-#include "IDBResourceIdentifier.h"
-#include "IDBTransactionInfo.h"
-#include "IDBValue.h"
-#endif
-
namespace WebCore {
CrossThreadCopierBase<false, false, URL>::Type CrossThreadCopierBase<false, false, URL>::copy(const URL& url)
@@ -110,85 +95,6 @@
return result;
}
-#if ENABLE(INDEXED_DATABASE)
-
-IndexedDB::TransactionMode CrossThreadCopierBase<false, false, IndexedDB::TransactionMode>::copy(const IndexedDB::TransactionMode& mode)
-{
- return mode;
-}
-
-IndexedDB::CursorDirection CrossThreadCopierBase<false, false, IndexedDB::CursorDirection>::copy(const IndexedDB::CursorDirection& direction)
-{
- return direction;
-}
-
-IndexedDB::CursorType CrossThreadCopierBase<false, false, IndexedDB::CursorType>::copy(const IndexedDB::CursorType& type)
-{
- return type;
-}
-
-CrossThreadCopierBase<false, false, IDBGetResult>::Type CrossThreadCopierBase<false, false, IDBGetResult>::copy(const IDBGetResult& result)
-{
- return result.isolatedCopy();
-}
-
-CrossThreadCopierBase<false, false, IDBKeyData>::Type CrossThreadCopierBase<false, false, IDBKeyData>::copy(const IDBKeyData& keyData)
-{
- return keyData.isolatedCopy();
-}
-
-CrossThreadCopierBase<false, false, IDBKeyRangeData>::Type CrossThreadCopierBase<false, false, IDBKeyRangeData>::copy(const IDBKeyRangeData& keyRangeData)
-{
- return keyRangeData.isolatedCopy();
-}
-
-CrossThreadCopierBase<false, false, IDBDatabaseInfo>::Type CrossThreadCopierBase<false, false, IDBDatabaseInfo>::copy(const IDBDatabaseInfo& info)
-{
- return info.isolatedCopy();
-}
-
-CrossThreadCopierBase<false, false, IDBDatabaseIdentifier>::Type CrossThreadCopierBase<false, false, IDBDatabaseIdentifier>::copy(const IDBDatabaseIdentifier& identifier)
-{
- return identifier.isolatedCopy();
-}
-
-CrossThreadCopierBase<false, false, IDBTransactionInfo>::Type CrossThreadCopierBase<false, false, IDBTransactionInfo>::copy(const IDBTransactionInfo& info)
-{
- return info.isolatedCopy();
-}
-
-CrossThreadCopierBase<false, false, IDBResourceIdentifier>::Type CrossThreadCopierBase<false, false, IDBResourceIdentifier>::copy(const IDBResourceIdentifier& identifier)
-{
- return identifier.isolatedCopy();
-}
-
-CrossThreadCopierBase<false, false, IDBError>::Type CrossThreadCopierBase<false, false, IDBError>::copy(const IDBError& error)
-{
- return error.isolatedCopy();
-}
-
-CrossThreadCopierBase<false, false, IDBObjectStoreInfo>::Type CrossThreadCopierBase<false, false, IDBObjectStoreInfo>::copy(const IDBObjectStoreInfo& info)
-{
- return info.isolatedCopy();
-}
-
-CrossThreadCopierBase<false, false, IDBIndexInfo>::Type CrossThreadCopierBase<false, false, IDBIndexInfo>::copy(const IDBIndexInfo& info)
-{
- return info.isolatedCopy();
-}
-
-CrossThreadCopierBase<false, false, IDBCursorInfo>::Type CrossThreadCopierBase<false, false, IDBCursorInfo>::copy(const IDBCursorInfo& info)
-{
- return info.isolatedCopy();
-}
-
-CrossThreadCopierBase<false, false, IDBValue>::Type CrossThreadCopierBase<false, false, IDBValue>::copy(const IDBValue& value)
-{
- return value.isolatedCopy();
-}
-
-#endif // ENABLE(INDEXED_DATABASE)
-
// Test CrossThreadCopier using COMPILE_ASSERT.
// Verify that ThreadSafeRefCounted objects get handled correctly.
@@ -211,32 +117,25 @@
>::value),
RawPointerTest);
+// Add specializations for RefCounted types which will let us verify that no other template matches.
+template<typename T> struct CrossThreadCopierBase<false, false, RefPtr<T>> {
+ typedef int Type;
+};
-// Add a generic specialization which will let's us verify that no other template matches.
-template<typename T> struct CrossThreadCopierBase<false, false, T> {
+template<typename T> struct CrossThreadCopierBase<false, false, PassRefPtr<T>> {
typedef int Type;
};
-// Verify that RefCounted objects only match our generic template which exposes Type as int.
+template<typename T> struct CrossThreadCopierBase<false, false, T*> {
+ typedef int Type;
+};
+
+// Verify that RefCounted objects only match the above templates which expose Type as int.
class CopierRefCountedTest : public RefCounted<CopierRefCountedTest> {
};
-COMPILE_ASSERT((std::is_same<
- int,
- CrossThreadCopier<PassRefPtr<CopierRefCountedTest>>::Type
- >::value),
- PassRefPtrRefCountedTest);
+static_assert((std::is_same<int, CrossThreadCopier<PassRefPtr<CopierRefCountedTest>>::Type>::value), "CrossThreadCopier specialization improperly applied to PassRefPtr<> of a RefCounted (but not ThreadSafeRefCounted) type");
+static_assert((std::is_same<int, CrossThreadCopier<RefPtr<CopierRefCountedTest>>::Type>::value), "CrossThreadCopier specialization improperly applied to RefPtr<> of a RefCounted (but not ThreadSafeRefCounted) type");
+static_assert((std::is_same<int, CrossThreadCopier<CopierRefCountedTest*>::Type>::value), "CrossThreadCopier specialization improperly applied to raw pointer of a RefCounted (but not ThreadSafeRefCounted) type");
-COMPILE_ASSERT((std::is_same<
- int,
- CrossThreadCopier<RefPtr<CopierRefCountedTest>>::Type
- >::value),
- RefPtrRefCountedTest);
-
-COMPILE_ASSERT((std::is_same<
- int,
- CrossThreadCopier<CopierRefCountedTest*>::Type
- >::value),
- RawPointerRefCountedTest);
-
} // namespace WebCore
Modified: trunk/Source/WebCore/platform/CrossThreadCopier.h (200248 => 200249)
--- trunk/Source/WebCore/platform/CrossThreadCopier.h 2016-04-29 16:54:36 UTC (rev 200248)
+++ trunk/Source/WebCore/platform/CrossThreadCopier.h 2016-04-29 17:05:46 UTC (rev 200249)
@@ -100,6 +100,14 @@
template<> struct CrossThreadCopierBase<false, false, IntSize> : public CrossThreadCopierPassThrough<IntSize> {
};
+// Classes that have an isolatedCopy() method get a default specialization.
+template<class T> struct CrossThreadCopierBase<false, false, T> {
+ static T copy(const T& value)
+ {
+ return value.isolatedCopy();
+ }
+};
+
// Custom copy methods.
template<typename T> struct CrossThreadCopierBase<false, true, T> {
typedef typename CrossThreadCopierBaseHelper::RemovePointer<T>::Type RefCountedType;
@@ -157,139 +165,8 @@
static Type copy(const Vector<String>&);
};
-#if ENABLE(INDEXED_DATABASE)
-namespace IndexedDB {
-enum class TransactionMode;
-enum class CursorDirection;
-enum class CursorType;
-}
-template<> struct CrossThreadCopierBase<false, false, IndexedDB::TransactionMode> {
- WEBCORE_EXPORT static IndexedDB::TransactionMode copy(const IndexedDB::TransactionMode&);
-};
-template<> struct CrossThreadCopierBase<false, false, IndexedDB::CursorDirection> {
- WEBCORE_EXPORT static IndexedDB::CursorDirection copy(const IndexedDB::CursorDirection&);
-};
-template<> struct CrossThreadCopierBase<false, false, IndexedDB::CursorType> {
- WEBCORE_EXPORT static IndexedDB::CursorType copy(const IndexedDB::CursorType&);
-};
-
-class IDBGetResult;
-template<> struct WEBCORE_EXPORT CrossThreadCopierBase<false, false, IDBGetResult> {
- typedef IDBGetResult Type;
- static Type copy(const IDBGetResult&);
-};
-
-class IDBKeyData;
-template<> struct WEBCORE_EXPORT CrossThreadCopierBase<false, false, IDBKeyData> {
- typedef IDBKeyData Type;
- static Type copy(const IDBKeyData&);
-};
-
-struct IDBKeyRangeData;
-template<> struct WEBCORE_EXPORT CrossThreadCopierBase<false, false, IDBKeyRangeData> {
- typedef IDBKeyRangeData Type;
- static Type copy(const IDBKeyRangeData&);
-};
-
-class IDBDatabaseInfo;
-template<> struct WEBCORE_EXPORT CrossThreadCopierBase<false, false, IDBDatabaseInfo> {
- typedef IDBDatabaseInfo Type;
- static Type copy(const IDBDatabaseInfo&);
-};
-
-class IDBDatabaseIdentifier;
-template<> struct WEBCORE_EXPORT CrossThreadCopierBase<false, false, IDBDatabaseIdentifier> {
- typedef IDBDatabaseIdentifier Type;
- static Type copy(const IDBDatabaseIdentifier&);
-};
-
-class IDBError;
-template<> struct WEBCORE_EXPORT CrossThreadCopierBase<false, false, IDBError> {
- typedef IDBError Type;
- static Type copy(const IDBError&);
-};
-
-class IDBResourceIdentifier;
-template<> struct WEBCORE_EXPORT CrossThreadCopierBase<false, false, IDBResourceIdentifier> {
- typedef IDBResourceIdentifier Type;
- static Type copy(const IDBResourceIdentifier&);
-};
-
-class IDBTransactionInfo;
-template<> struct WEBCORE_EXPORT CrossThreadCopierBase<false, false, IDBTransactionInfo> {
- typedef IDBTransactionInfo Type;
- static Type copy(const IDBTransactionInfo&);
-};
-
-class IDBObjectStoreInfo;
-template<> struct WEBCORE_EXPORT CrossThreadCopierBase<false, false, IDBObjectStoreInfo> {
- typedef IDBObjectStoreInfo Type;
- static Type copy(const IDBObjectStoreInfo&);
-};
-
-class IDBIndexInfo;
-template<> struct WEBCORE_EXPORT CrossThreadCopierBase<false, false, IDBIndexInfo> {
- typedef IDBIndexInfo Type;
- static Type copy(const IDBIndexInfo&);
-};
-
-class IDBCursorInfo;
-template<> struct WEBCORE_EXPORT CrossThreadCopierBase<false, false, IDBCursorInfo> {
- typedef IDBCursorInfo Type;
- static Type copy(const IDBCursorInfo&);
-};
-
-class IDBValue;
-template<> struct WEBCORE_EXPORT CrossThreadCopierBase<false, false, IDBValue> {
- typedef IDBValue Type;
- static Type copy(const IDBValue&);
-};
-
-#endif
-
template<typename T>
struct CrossThreadCopier : public CrossThreadCopierBase<CrossThreadCopierBaseHelper::IsEnumOrConvertibleToInteger<T>::value, CrossThreadCopierBaseHelper::IsThreadSafeRefCountedPointer<T>::value, T> {
};
-template<typename T> struct AllowCrossThreadAccessWrapper {
-public:
- explicit AllowCrossThreadAccessWrapper(T* value)
- : m_value(value) { }
- T* value() const { return m_value; }
-private:
- T* m_value;
-};
-
-template<typename T> struct CrossThreadCopierBase<false, false, AllowCrossThreadAccessWrapper<T>> {
- typedef T* Type;
- static Type copy(const AllowCrossThreadAccessWrapper<T>& wrapper) { return wrapper.value(); }
-};
-
-template<typename T> AllowCrossThreadAccessWrapper<T> AllowCrossThreadAccess(T* value)
-{
- return AllowCrossThreadAccessWrapper<T>(value);
-}
-
-// FIXME: Move to a different header file. AllowAccessLater is for cross-thread access
-// that is not cross-thread (tasks posted to a queue guaranteed to run on the same thread).
-template<typename T> struct AllowAccessLaterWrapper {
-public:
- explicit AllowAccessLaterWrapper(T* value)
- : m_value(value) { }
- T* value() const { return m_value; }
-private:
- T* m_value;
-};
-
-template<typename T> struct CrossThreadCopierBase<false, false, AllowAccessLaterWrapper<T>> {
- typedef T* Type;
- static Type copy(const AllowAccessLaterWrapper<T>& wrapper) { return wrapper.value(); }
-};
-
-template<typename T> AllowAccessLaterWrapper<T> AllowAccessLater(T* value)
-{
- return AllowAccessLaterWrapper<T>(value);
-}
-
-
} // namespace WebCore
Modified: trunk/Source/WebKit2/ChangeLog (200248 => 200249)
--- trunk/Source/WebKit2/ChangeLog 2016-04-29 16:54:36 UTC (rev 200248)
+++ trunk/Source/WebKit2/ChangeLog 2016-04-29 17:05:46 UTC (rev 200249)
@@ -1,3 +1,17 @@
+2016-04-29 Brady Eidson <beid...@apple.com>
+
+ Add a default ".isolatedCopy()" specialization to CrossThreadCopier, and other small cleanup.
+ https://bugs.webkit.org/show_bug.cgi?id=157185
+
+ Reviewed by Anders Carlsson.
+
+ * Shared/WebCrossThreadCopier.cpp:
+ (WebCore::Vector<char>>::copy): reserveInitialCapacity() before creating the copy.
+ (WebCore::Vector<int64_t>>::copy): Ditto.
+ (WebCore::Vector<uint8_t>>::copy): Ditto.
+ (WebCore::Vector<Vector<IDBKeyData>>>::copy): Deleted dead code.
+ * Shared/WebCrossThreadCopier.h:
+
2016-04-29 Commit Queue <commit-qu...@webkit.org>
Unreviewed, rolling out r200217.
Modified: trunk/Source/WebKit2/Shared/WebCrossThreadCopier.cpp (200248 => 200249)
--- trunk/Source/WebKit2/Shared/WebCrossThreadCopier.cpp 2016-04-29 16:54:36 UTC (rev 200248)
+++ trunk/Source/WebKit2/Shared/WebCrossThreadCopier.cpp 2016-04-29 17:05:46 UTC (rev 200249)
@@ -36,6 +36,7 @@
Vector<char> CrossThreadCopierBase<false, false, Vector<char>>::copy(const Vector<char>& vector)
{
Vector<char> result;
+ result.reserveInitialCapacity(vector.size());
result.appendVector(vector);
return result;
}
@@ -43,6 +44,7 @@
Vector<int64_t> CrossThreadCopierBase<false, false, Vector<int64_t>>::copy(const Vector<int64_t>& vector)
{
Vector<int64_t> result;
+ result.reserveInitialCapacity(vector.size());
result.appendVector(vector);
return result;
}
@@ -50,23 +52,11 @@
Vector<uint8_t> CrossThreadCopierBase<false, false, Vector<uint8_t>>::copy(const Vector<uint8_t>& vector)
{
Vector<uint8_t> result;
+ result.reserveInitialCapacity(vector.size());
result.appendVector(vector);
return result;
}
-Vector<Vector<IDBKeyData>> CrossThreadCopierBase<false, false, Vector<Vector<IDBKeyData>>>::copy(const Vector<Vector<IDBKeyData>>& vector)
-{
- Vector<Vector<IDBKeyData>> result;
-
- for (const auto& keys : vector) {
- result.append(Vector<IDBKeyData>());
- for (const auto& key : keys)
- result.last().append(WebCore::CrossThreadCopier<IDBKeyData>::copy(key));
- }
-
- return result;
-}
-
ASCIILiteral CrossThreadCopierBase<false, false, ASCIILiteral>::copy(const ASCIILiteral& literal)
{
return literal;
Modified: trunk/Source/WebKit2/Shared/WebCrossThreadCopier.h (200248 => 200249)
--- trunk/Source/WebKit2/Shared/WebCrossThreadCopier.h 2016-04-29 16:54:36 UTC (rev 200248)
+++ trunk/Source/WebKit2/Shared/WebCrossThreadCopier.h 2016-04-29 17:05:46 UTC (rev 200249)
@@ -64,10 +64,6 @@
static Vector<uint8_t> copy(const Vector<uint8_t>&);
};
-template<> struct CrossThreadCopierBase<false, false, Vector<Vector<IDBKeyData>>> {
- static Vector<Vector<IDBKeyData>> copy(const Vector<Vector<IDBKeyData>>&);
-};
-
template<> struct CrossThreadCopierBase<false, false, WTF::ASCIILiteral> {
static WTF::ASCIILiteral copy(const WTF::ASCIILiteral&);
};