Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(319)

Unified Diff: third_party/WebKit/Source/platform/CrossThreadCopier.cpp

Issue 2103823002: Disallow raw pointers in CrossThreadCopier/threadSafeBind() (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: bug fix. Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « third_party/WebKit/Source/platform/CrossThreadCopier.h ('k') | third_party/WebKit/Source/wtf/PassRefPtr.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/WebKit/Source/platform/CrossThreadCopier.cpp
diff --git a/third_party/WebKit/Source/platform/CrossThreadCopier.cpp b/third_party/WebKit/Source/platform/CrossThreadCopier.cpp
index 80337ad770838d3bfa90364571a2a4389cdad5fb..4f60be15912308eea487b8d201350487dab2a73e 100644
--- a/third_party/WebKit/Source/platform/CrossThreadCopier.cpp
+++ b/third_party/WebKit/Source/platform/CrossThreadCopier.cpp
@@ -70,27 +70,26 @@ CrossThreadCopier<ResourceResponse>::Type CrossThreadCopier<ResourceResponse>::c
class CopierThreadSafeRefCountedTest : public ThreadSafeRefCounted<CopierThreadSafeRefCountedTest> {
};
+// Add a generic specialization which will let's us verify that no other template matches.
+template<typename T> struct CrossThreadCopierBase<T, false> {
+ typedef int Type;
+};
+
static_assert((std::is_same<
PassRefPtr<CopierThreadSafeRefCountedTest>,
CrossThreadCopier<PassRefPtr<CopierThreadSafeRefCountedTest>>::Type
>::value),
- "PassRefPtr test");
+ "PassRefPtr + ThreadSafeRefCounted should pass CrossThreadCopier");
static_assert((std::is_same<
- PassRefPtr<CopierThreadSafeRefCountedTest>,
+ RefPtr<CopierThreadSafeRefCountedTest>,
CrossThreadCopier<RefPtr<CopierThreadSafeRefCountedTest>>::Type
>::value),
- "RefPtr test");
+ "RefPtr + ThreadSafeRefCounted should pass CrossThreadCopier");
static_assert((std::is_same<
- PassRefPtr<CopierThreadSafeRefCountedTest>,
+ int,
CrossThreadCopier<CopierThreadSafeRefCountedTest*>::Type
>::value),
- "RawPointer test");
-
-
-// Add a generic specialization which will let's us verify that no other template matches.
-template<typename T> struct CrossThreadCopierBase<T, false, false> {
- typedef int Type;
-};
+ "Raw pointer + ThreadSafeRefCounted should NOT pass CrossThreadCopier");
// Verify that RefCounted objects only match our generic template which exposes Type as int.
class CopierRefCountedTest : public RefCounted<CopierRefCountedTest> {
@@ -98,21 +97,9 @@ class CopierRefCountedTest : public RefCounted<CopierRefCountedTest> {
static_assert((std::is_same<
int,
- CrossThreadCopier<PassRefPtr<CopierRefCountedTest>>::Type
- >::value),
- "PassRefPtr<RefCountedTest> test");
-
-static_assert((std::is_same<
- int,
- CrossThreadCopier<RefPtr<CopierRefCountedTest>>::Type
- >::value),
- "RefPtr<RefCounted> test");
-
-static_assert((std::is_same<
- int,
CrossThreadCopier<CopierRefCountedTest*>::Type
>::value),
- "Raw pointer RefCounted test");
+ "Raw pointer + RefCounted should NOT pass CrossThreadCopier");
// Verify that std::unique_ptr gets passed through.
static_assert((std::is_same<
« no previous file with comments | « third_party/WebKit/Source/platform/CrossThreadCopier.h ('k') | third_party/WebKit/Source/wtf/PassRefPtr.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698