New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 597856 link

Starred by 4 users

Issue metadata

Status: Fixed
Owner:
Closed: Jun 2016
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 2
Type: Bug



Sign in to add a comment

Make WTF::bind less magical when working with GarbageCollected objects.

Project Member Reported by dcheng@chromium.org, Mar 25 2016

Issue description

Today, danakj@ wrote a patch and couldn't figure out why an object bound into a SameThreadClosure wasn't getting freed: https://codereview.chromium.org/1830033003. Just glancing at this code, it's very mystifying to understand this would happen: there's no obvious way for Oilpan to trace into SameThreadClosure, so if anything, objects bound into SameThreadClosures should be getting GCed mistakenly freed, not mistakenly kept alive.

Eventually, esprehn@ noticed that we have special template traits that magically turn raw pointers to GarbageCollected objects into a Persistent handle: https://code.google.com/p/chromium/codesearch#chromium/src/third_party/WebKit/Source/platform/heap/Handle.h&l=1432

This is very magical and not at all obvious from the callsite. I propose that we make WTF::bind more like base::Bind() by doing two things:

1. Make WTF::bind on a raw pointer to a GCed object a compile-time error. This is just like how base::Bind(&F, my_refcounted_object) won't compile in Chromium: [1]

2. Add the Oilpan equivalents of base::Owned, base::RetainedRef, etc [2]. This way it will be obvious at the call site that it is a strong or weak binding. I guess that we'll want PersistRef and WeaklyPersistRef (names are a strawman, happy for better suggestions). I'm not sure if there are any other useful wrappers: I don't think we'd want an equivalent of Unretained() for GCed objects, but maybe there's some edge case where that would be useful.

Also, I guess this might be easier to do once non-Oilpan is removed, but I believe that's likely to happen very soon.

[1] https://code.google.com/p/chromium/codesearch#chromium/src/base/memory/raw_scoped_refptr_mismatch_checker.h&rcl=1458848021&l=27
[2] https://code.google.com/p/chromium/codesearch#chromium/src/base/bind_helpers.h&l=18
 

Comment 1 by dcheng@chromium.org, Mar 25 2016

An example of what code might look like after this:

  auto c = bind(&Document::callback, PersistRef(document));
  auto w = bind(&Document::cancelableCallback, WeaklyRef(document));
Can we just use WeakMember and UntracedMember?

Comment 3 by dcheng@chromium.org, Mar 25 2016

Sure, if that Just Works, that would be nice. It'd look a bit wonky though, since you'd have a stack WeakMember<> temporarily.

Comment 4 by tzik@chromium.org, Mar 25 2016

Cc: hirosh...@chromium.org
Adding hiroshige@, who has a proposal to add retained()/unretained() to WTF.
Cc: yutak@chromium.org
> 1. Make WTF::bind on a raw pointer to a GCed object a compile-time error.
Agree!

> 2. Add the Oilpan equivalents of base::Owned, base::RetainedRef, etc [2].
Agree. We also need equivalents for Unretained(), RetainedRef() for non-Oilpan pointers.

One question for which I'm not sure is: Should/can we use the same wrappers in Chromium/Blink, or should we implement similar wrappers in WTF separately?

tzik@ suggested (in an offline discussion a couple of weeks ago) that we can remove (most of) ParamStorageTraits when we add sufficient supports for move-only types.
(+yutak@ who adding move-only support for WTF::bind()).

Comment 7 by kbr@chromium.org, Mar 25 2016

Cc: kbr@chromium.org

Comment 8 by tzik@chromium.org, Mar 25 2016

#6: Let me adjust my opinion :p). IMO, we should keep a traits for the bound params.
Yes, we will be able to remove WTF::ParamStorageTraits after all, and also able to remove base::CallbackParamTraits.
However, it requires significant work (removing PassRefPtr/PassOwnPtr etc) before it, and these traits seem useful to have a injection point for a type-checks to disallow raw-ptr to GCed object or RCed object.
Thanks for digging into the issue! Dcheng's proposal in #0 sounds reasonable.

Components: -Blink>Oilpan Blink>MemoryAllocator>GarbageCollection
Owner: hirosh...@chromium.org
Status: Started (was: Available)
Drafted CLs.

Library design:
  For same-thread usage, use retainedRef(GCed_pointer) or (Pass)RefPtr or unretained(non_GCed_pointers).
  For cross-thread usage, use crossThreadRetainedRef(GCed_pointer) or (Pass)RefPtr (ThreadSafeRefCounted only) or AllowCrossThreadAccess(unretained(non_GCed_pointers)).
  Introduce retainedRef() and crossThreadRetainedRef() for GCed pointers:
    (I used the name of retainedRef() to make it consistent with base::RetainedRef(). retainedRef() for RefCounted pointers are intentionally not added to discourage from making raw pointers from RefPtr and then applying retainedRef() to the raw pointers)
    https://codereview.chromium.org/1923813002/
  Introduce unretained():
    https://codereview.chromium.org/1919723002/

Replacing call sites of bind() etc.:
  Cross-thread:
    GCed pointers -> crossThreadRetainedRef()
      https://codereview.chromium.org/1904283004/
    AllowCrossThreadAccess() + GCed pointers -> crossThreadRetainedRef()
      https://codereview.chromium.org/1914453002/
    AllowCrossThreadAccess() + ThreadSafeRefCounted pointers -> (Pass)RefPtr
      https://codereview.chromium.org/1905343002/
    AllowCrossThreadAccess() + other non-GCed pointers -> AllowCrossThreadAccess(unretained())
      https://codereview.chromium.org/1925583003/
  Same-thread:
    non-GC pointers -> unretained()
      https://codereview.chromium.org/1915153004/
    GCed pointers -> retainedRef()
      https://codereview.chromium.org/1916283003/

Does the design looks good?
And is the number of wrapper calls added to bind() call sites reasonable?

> Comment #2
> Can we just use WeakMember and UntracedMember?
I found currently threadSafeBind(WeakMember<T>(p)) keeps a persistent (i.e. not weak) reference (See CrossThreadCopier<WeakMember<T>>).
Currently no one use that, but it might be better to use a new wrapper to avoid historical confusion.
Cc: kinuko@chromium.org
Project Member

Comment 15 by bugdroid1@chromium.org, Apr 28 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/6f2f4d868c933bcce80427566d2bc985efdfc92b

commit 6f2f4d868c933bcce80427566d2bc985efdfc92b
Author: hiroshige <hiroshige@chromium.org>
Date: Thu Apr 28 07:27:00 2016

Remove ParamStorageTraits from BeaconLoader.cpp

We are going to make WTF::bind() to depend less on ParamStorageTraits and
simplify ParamStorageTraits, for WTF::bind() refactoring and merging
WTF::bind() and base::Bind().
This CL removes uses of ParamStorageTraits from outside WTF::bind() to make
those activities easier.

BUG= 597856 

Review-Url: https://codereview.chromium.org/1920213002
Cr-Commit-Position: refs/heads/master@{#390319}

[modify] https://crrev.com/6f2f4d868c933bcce80427566d2bc985efdfc92b/third_party/WebKit/Source/core/loader/BeaconLoader.cpp

Project Member

Comment 16 by bugdroid1@chromium.org, Apr 28 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/bc00ec091a4ff8073390fc97a692613e2d40ee90

commit bc00ec091a4ff8073390fc97a692613e2d40ee90
Author: hiroshige <hiroshige@chromium.org>
Date: Thu Apr 28 08:48:15 2016

Add support for IsGarbageCollectedType<void>

Currently IsGarbageCollectedType<void> and PointerParamStorageTraits<void*> can't be compiled.
This CL makes them successfully compiled, and removes ParamStorageTraits<void*> specialization.

BUG= 597856 

Review-Url: https://codereview.chromium.org/1923183002
Cr-Commit-Position: refs/heads/master@{#390331}

[modify] https://crrev.com/bc00ec091a4ff8073390fc97a692613e2d40ee90/third_party/WebKit/Source/platform/heap/GarbageCollected.h
[modify] https://crrev.com/bc00ec091a4ff8073390fc97a692613e2d40ee90/third_party/WebKit/Source/platform/heap/Handle.h
[modify] https://crrev.com/bc00ec091a4ff8073390fc97a692613e2d40ee90/third_party/WebKit/Source/wtf/Functional.h

Project Member

Comment 17 by bugdroid1@chromium.org, Apr 28 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/331e4aa7f90abc5a73052d21627e891959851c73

commit 331e4aa7f90abc5a73052d21627e891959851c73
Author: hiroshige <hiroshige@chromium.org>
Date: Thu Apr 28 12:35:19 2016

Disallow direct use of AllowCrossThreadAccessWrapper

Use AllowCrossThreadAccess() instead.

BUG= 597856 

Review-Url: https://codereview.chromium.org/1916923005
Cr-Commit-Position: refs/heads/master@{#390355}

[modify] https://crrev.com/331e4aa7f90abc5a73052d21627e891959851c73/third_party/WebKit/Source/platform/CrossThreadCopier.h
[modify] https://crrev.com/331e4aa7f90abc5a73052d21627e891959851c73/third_party/WebKit/Source/platform/heap/HeapTest.cpp

Project Member

Comment 18 by bugdroid1@chromium.org, Apr 28 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/7243fbfa8ddce432569b59a16126f3511a4cd808

commit 7243fbfa8ddce432569b59a16126f3511a4cd808
Author: hiroshige <hiroshige@chromium.org>
Date: Thu Apr 28 14:18:56 2016

Remove CrossThreadCopier for WeakMember and WeakMember*

- They are not used.
- When they are used, persistent (not weak) references are kept in WTF::Function, which might be confusing.

BUG= 597856 

Review-Url: https://codereview.chromium.org/1920193002
Cr-Commit-Position: refs/heads/master@{#390371}

[modify] https://crrev.com/7243fbfa8ddce432569b59a16126f3511a4cd808/third_party/WebKit/Source/platform/CrossThreadCopier.h

As discussed offline in the syncup, I think our plan is something like this?

For GCed pointers:
- Persistent<>()
- CrossThreadPersistent<>()
- WeakPersistent<>()
- CrossThreadWeakPersistent<>()

For non-GCed pointers:
- PassRefPtr()
- crossThreadPassRefPtr()  <-- This should internally be the same as PassRefPtr(), but maybe it's worth having for some verification purposes?
- unretained()
- crossThreadUnretained()
- passed()
- crossThreadPassed()  <-- Do we need this?

What's the diff between Persitent and WeakPersistent?
Persistent is a strong reference (which keeps the pointing object alive). WeakPersistent is a weak reference (which is automatically cleared out when the pointing object gets collected; then the bound callback is not called).

Ah thanks. I think that things look good as proposed from my end.

One thing that I wasn't sure is you mentioned retainedRef (to match base) above, but for GC pointers. In base it is for ref-counted things when the bound method doesn't want to take ownership (aka it's base::Owned for refcounts).

I see retainedRef is gone in the latest plan, did you have thoughts about it?
I thought it would be strange to use retainedRef for GCed pointers, so I removed the retainedRef. (If I'm understanding correctly, hiroshige is on the same page.)


Ya I agree, I guess you didn't consider them for the refcount case like base's? We can wait for the bind merge to deal with retained ref for the refcounted->rawpointer case. But it might save some work to do RetainedRef and Owned for converting smart pointers to raw pointers now. No strong feelings here though.
Oh, what you're suggesting is to use retainedRef() instead of PassRefPtr? I'm fine with it.

Maaaybe, I assumed PassRefPtr() was for passing RefPtrs to bound functions, but just to say that they are same thread.

Here's the introduction to RetainedRef:
https://groups.google.com/a/chromium.org/d/topic/chromium-dev/ozB_8EVmyoc/discussion

There's some examples at the bottom of the email, that I think explain it well.
Updated plan:

For GCed pointers:
- Persistent<>()
- CrossThreadPersistent<>()
- WeakPersistent<>()
- CrossThreadWeakPersistent<>()
We'll introduce wrappers so that we can omit type names:
- wrapPersistent()
- wrapCrossThreadPersistent()
- wrapWeakPersistent()
- wrapCrossThreadWeakPersistent()

For non-GCed pointers:
- PassRefPtr<>()
- unretained()
- crossThreadUnretained()
- passed()

Notes:
- We don't introduce crossThreadPassRefPtr, because currently whether PassRefPtr<T> can be passed across threads is determined by whether T is ThreadSafeRefCounted or not. We might want to clean up this, but it should be a separate issue.
- We don't modify passed() cases here, because it is not required for forbidding raw pointers.

The plan sounds good to me.

Project Member

Comment 29 by bugdroid1@chromium.org, May 13 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/a6d7b889ea801601b494d5433cc68c4018cda457

commit a6d7b889ea801601b494d5433cc68c4018cda457
Author: hiroshige <hiroshige@chromium.org>
Date: Fri May 13 09:26:00 2016

Introduce wrapPersistent()/wrapCrossThreadPersistent()

These wrappers are for constructing Persistent/CrossThreadPersistent from
raw pointers without writing typenames explicitly.

These will be used by subsequent CLs for  Issue 597856 .

BUG= 597856 

Review-Url: https://codereview.chromium.org/1923813002
Cr-Commit-Position: refs/heads/master@{#393490}

[modify] https://crrev.com/a6d7b889ea801601b494d5433cc68c4018cda457/third_party/WebKit/Source/platform/heap/Handle.h

Project Member

Comment 30 by bugdroid1@chromium.org, May 13 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/4a3b5f099c7831d163fbafde81f618b90736ceb4

commit 4a3b5f099c7831d163fbafde81f618b90736ceb4
Author: hiroshige <hiroshige@chromium.org>
Date: Fri May 13 16:55:54 2016

Replace threadSafeBind() + GCed pointers with CrossThreadPersistent

Disable GCed raw pointers in threadSafeBind(), use CrossThreadPersistent instead:
- Remove CrossThreadCopier for GCed raw pointers
- Introduce CrossThreadCopier for CrossThreadPersistent
- Apply wrapCrossThreadPersistent() to GCed raw pointers

BUG= 597856 

Review-Url: https://codereview.chromium.org/1904283004
Cr-Commit-Position: refs/heads/master@{#393555}

[modify] https://crrev.com/4a3b5f099c7831d163fbafde81f618b90736ceb4/third_party/WebKit/Source/core/dom/CrossThreadTaskTest.cpp
[modify] https://crrev.com/4a3b5f099c7831d163fbafde81f618b90736ceb4/third_party/WebKit/Source/core/html/canvas/CanvasAsyncBlobCreator.cpp
[modify] https://crrev.com/4a3b5f099c7831d163fbafde81f618b90736ceb4/third_party/WebKit/Source/modules/webaudio/AbstractAudioContext.cpp
[modify] https://crrev.com/4a3b5f099c7831d163fbafde81f618b90736ceb4/third_party/WebKit/Source/modules/webaudio/AsyncAudioDecoder.cpp
[modify] https://crrev.com/4a3b5f099c7831d163fbafde81f618b90736ceb4/third_party/WebKit/Source/modules/webdatabase/DatabaseThread.cpp
[modify] https://crrev.com/4a3b5f099c7831d163fbafde81f618b90736ceb4/third_party/WebKit/Source/platform/CrossThreadCopier.cpp
[modify] https://crrev.com/4a3b5f099c7831d163fbafde81f618b90736ceb4/third_party/WebKit/Source/platform/CrossThreadCopier.h

Project Member

Comment 31 by bugdroid1@chromium.org, May 13 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/4c6e26cd4be4f511aa6a62e46c37178605fb3714

commit 4c6e26cd4be4f511aa6a62e46c37178605fb3714
Author: hiroshige <hiroshige@chromium.org>
Date: Fri May 13 17:49:50 2016

Apply AllowCrossThreadAccess() in the callers of createCrossThreadTask()

This CL removes AllowCrossThreadAccess() calls in CrossThreadTask.h and applies
AllowCrossThreadAccess() at the callers of createCrossThreadAccess().

All previous uses of createCrossThreadTask() that would require
AllowCrossThreadAccess() are detected by compile errors
due to lack of CrossThreadCopier for WeakPtr/pointers because
https://codereview.chromium.org/1904283004/ removed CrossThreadCopier for
GCed pointers.

BUG= 597856 

Review-Url: https://codereview.chromium.org/1766143002
Cr-Commit-Position: refs/heads/master@{#393573}

[modify] https://crrev.com/4c6e26cd4be4f511aa6a62e46c37178605fb3714/third_party/WebKit/Source/core/dom/CrossThreadTask.h
[modify] https://crrev.com/4c6e26cd4be4f511aa6a62e46c37178605fb3714/third_party/WebKit/Source/core/loader/WorkerThreadableLoader.cpp
[modify] https://crrev.com/4c6e26cd4be4f511aa6a62e46c37178605fb3714/third_party/WebKit/Source/core/page/NetworkStateNotifier.cpp
[modify] https://crrev.com/4c6e26cd4be4f511aa6a62e46c37178605fb3714/third_party/WebKit/Source/core/workers/InProcessWorkerMessagingProxy.cpp
[modify] https://crrev.com/4c6e26cd4be4f511aa6a62e46c37178605fb3714/third_party/WebKit/Source/core/workers/InProcessWorkerObjectProxy.cpp
[modify] https://crrev.com/4c6e26cd4be4f511aa6a62e46c37178605fb3714/third_party/WebKit/Source/modules/fetch/CrossThreadHolder.h
[modify] https://crrev.com/4c6e26cd4be4f511aa6a62e46c37178605fb3714/third_party/WebKit/Source/modules/mediastream/MediaStreamTrackSourcesRequestImpl.cpp
[modify] https://crrev.com/4c6e26cd4be4f511aa6a62e46c37178605fb3714/third_party/WebKit/Source/modules/webaudio/MediaElementAudioSourceNode.cpp
[modify] https://crrev.com/4c6e26cd4be4f511aa6a62e46c37178605fb3714/third_party/WebKit/Source/modules/webaudio/OfflineAudioDestinationNode.cpp
[modify] https://crrev.com/4c6e26cd4be4f511aa6a62e46c37178605fb3714/third_party/WebKit/Source/modules/webaudio/ScriptProcessorNode.cpp
[modify] https://crrev.com/4c6e26cd4be4f511aa6a62e46c37178605fb3714/third_party/WebKit/Source/modules/webdatabase/Database.cpp
[modify] https://crrev.com/4c6e26cd4be4f511aa6a62e46c37178605fb3714/third_party/WebKit/Source/modules/websockets/WorkerWebSocketChannel.cpp
[modify] https://crrev.com/4c6e26cd4be4f511aa6a62e46c37178605fb3714/third_party/WebKit/Source/web/ServiceWorkerGlobalScopeProxy.cpp
[modify] https://crrev.com/4c6e26cd4be4f511aa6a62e46c37178605fb3714/third_party/WebKit/Source/web/WebSharedWorkerImpl.cpp

Project Member

Comment 32 by bugdroid1@chromium.org, May 17 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/7e43c8dae9203ccc418452fafdea69a0f3a7eaef

commit 7e43c8dae9203ccc418452fafdea69a0f3a7eaef
Author: hiroshige <hiroshige@chromium.org>
Date: Tue May 17 07:29:00 2016

Replace AllowCrossThreadAccess() + GCed pointers with wrapCrossThreadPersistent()

This CL disallows AllowCrossThreadAccess() with GCed pointers in
platform/CrossThreadCopier.h and replaces AllowCrossThreadAccess() with
wrapCrossThreadPersistent() in other files where compile failed.

BUG= 597856 

Review-Url: https://codereview.chromium.org/1914453002
Cr-Commit-Position: refs/heads/master@{#394076}

[modify] https://crrev.com/7e43c8dae9203ccc418452fafdea69a0f3a7eaef/third_party/WebKit/Source/bindings/core/v8/ScriptStreamer.cpp
[modify] https://crrev.com/7e43c8dae9203ccc418452fafdea69a0f3a7eaef/third_party/WebKit/Source/core/html/canvas/CanvasAsyncBlobCreator.cpp
[modify] https://crrev.com/7e43c8dae9203ccc418452fafdea69a0f3a7eaef/third_party/WebKit/Source/core/imagebitmap/ImageBitmapFactories.cpp
[modify] https://crrev.com/7e43c8dae9203ccc418452fafdea69a0f3a7eaef/third_party/WebKit/Source/modules/fetch/CrossThreadHolder.h
[modify] https://crrev.com/7e43c8dae9203ccc418452fafdea69a0f3a7eaef/third_party/WebKit/Source/modules/mediastream/MediaStreamTrackSourcesRequestImpl.cpp
[modify] https://crrev.com/7e43c8dae9203ccc418452fafdea69a0f3a7eaef/third_party/WebKit/Source/modules/webaudio/AsyncAudioDecoder.cpp
[modify] https://crrev.com/7e43c8dae9203ccc418452fafdea69a0f3a7eaef/third_party/WebKit/Source/modules/webdatabase/Database.cpp
[modify] https://crrev.com/7e43c8dae9203ccc418452fafdea69a0f3a7eaef/third_party/WebKit/Source/modules/websockets/WorkerWebSocketChannel.cpp
[modify] https://crrev.com/7e43c8dae9203ccc418452fafdea69a0f3a7eaef/third_party/WebKit/Source/platform/CrossThreadCopier.h

Project Member

Comment 35 by bugdroid1@chromium.org, May 17 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/e656f4c55f88ea32473335e17d6fc2065f119ef2

commit e656f4c55f88ea32473335e17d6fc2065f119ef2
Author: hiroshige <hiroshige@chromium.org>
Date: Tue May 17 17:27:03 2016

Allow passing WeakPtr across threads without AllowCrossThreadAccess()

This removes AllowCrossThreadAccess() for WeakPtr and
adds CrossThreadCopier for WeakPtr instead.

This CL doesn't introduce crossThreadWeakPtr(), because:
- If the thread restriction of WeakPtr is violated, the assertions in WeakPtr
  will fail quite reliably if covered by tests. Therefore, annotations like
  AllowCrossThreadAccess()/crossThreadWeakPtr() is not so essential in
  catching errors.
- There is no CrossThreadWeakPtr, so the wrapper crossThreadWeakPtr() can be
  confusing.

BUG= 597856 

Review-Url: https://codereview.chromium.org/1909353003
Cr-Commit-Position: refs/heads/master@{#394154}

[modify] https://crrev.com/e656f4c55f88ea32473335e17d6fc2065f119ef2/third_party/WebKit/Source/core/html/parser/BackgroundHTMLParser.cpp
[modify] https://crrev.com/e656f4c55f88ea32473335e17d6fc2065f119ef2/third_party/WebKit/Source/core/html/parser/HTMLDocumentParser.cpp
[modify] https://crrev.com/e656f4c55f88ea32473335e17d6fc2065f119ef2/third_party/WebKit/Source/platform/CrossThreadCopier.h

Comment 36 by tkent@chromium.org, Jun 23 2016

Components: -Blink>Architecture Blink>Internals
Renaming Blink>Architecture to Blink>Internals

Project Member

Comment 37 by bugdroid1@chromium.org, Jun 23 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/8359caf0b6a4b86949be98b12147c926fb58d2a8

commit 8359caf0b6a4b86949be98b12147c926fb58d2a8
Author: tzik <tzik@chromium.org>
Date: Thu Jun 23 07:46:01 2016

Wrap GCed raw pointer parameters of WTF::bind with Persistent

This CL adds `wrapPersistent` to all GCed raw pointer prameters
of WTF::bind, as a preparation of raw pointer removal on WTF::bind.

WTF::bind and blink::threadSafeBind wrap raw pointers into Persistent if
it's a GCed type. However, the lifetime management based on the type get
considered harmful these days, and should eventually be removed.
This CL and following CLs annotate all raw pointers on WTF::bind, and
ban all raw pointers.

BUG= 597856 

Review-Url: https://codereview.chromium.org/2049003002
Cr-Commit-Position: refs/heads/master@{#401558}

[modify] https://crrev.com/8359caf0b6a4b86949be98b12147c926fb58d2a8/third_party/WebKit/Source/bindings/core/v8/V8ScriptRunner.cpp
[modify] https://crrev.com/8359caf0b6a4b86949be98b12147c926fb58d2a8/third_party/WebKit/Source/core/dom/ExecutionContext.cpp
[modify] https://crrev.com/8359caf0b6a4b86949be98b12147c926fb58d2a8/third_party/WebKit/Source/core/fetch/MemoryCacheTest.cpp
[modify] https://crrev.com/8359caf0b6a4b86949be98b12147c926fb58d2a8/third_party/WebKit/Source/core/fileapi/FileReader.cpp
[modify] https://crrev.com/8359caf0b6a4b86949be98b12147c926fb58d2a8/third_party/WebKit/Source/core/frame/LocalDOMWindow.cpp
[modify] https://crrev.com/8359caf0b6a4b86949be98b12147c926fb58d2a8/third_party/WebKit/Source/core/html/HTMLCanvasElement.cpp
[modify] https://crrev.com/8359caf0b6a4b86949be98b12147c926fb58d2a8/third_party/WebKit/Source/core/html/HTMLInputElement.cpp
[modify] https://crrev.com/8359caf0b6a4b86949be98b12147c926fb58d2a8/third_party/WebKit/Source/core/html/HTMLMediaElement.cpp
[modify] https://crrev.com/8359caf0b6a4b86949be98b12147c926fb58d2a8/third_party/WebKit/Source/core/html/HTMLSelectElement.cpp
[modify] https://crrev.com/8359caf0b6a4b86949be98b12147c926fb58d2a8/third_party/WebKit/Source/core/html/HTMLSlotElement.cpp
[modify] https://crrev.com/8359caf0b6a4b86949be98b12147c926fb58d2a8/third_party/WebKit/Source/core/html/canvas/CanvasAsyncBlobCreator.cpp
[modify] https://crrev.com/8359caf0b6a4b86949be98b12147c926fb58d2a8/third_party/WebKit/Source/core/html/canvas/CanvasAsyncBlobCreatorTest.cpp
[modify] https://crrev.com/8359caf0b6a4b86949be98b12147c926fb58d2a8/third_party/WebKit/Source/core/html/forms/SearchInputType.cpp
[modify] https://crrev.com/8359caf0b6a4b86949be98b12147c926fb58d2a8/third_party/WebKit/Source/core/inspector/InspectorCSSAgent.cpp
[modify] https://crrev.com/8359caf0b6a4b86949be98b12147c926fb58d2a8/third_party/WebKit/Source/core/inspector/InspectorPageAgent.cpp
[modify] https://crrev.com/8359caf0b6a4b86949be98b12147c926fb58d2a8/third_party/WebKit/Source/core/page/NetworkStateNotifierTest.cpp
[modify] https://crrev.com/8359caf0b6a4b86949be98b12147c926fb58d2a8/third_party/WebKit/Source/core/workers/InProcessWorkerBase.cpp
[modify] https://crrev.com/8359caf0b6a4b86949be98b12147c926fb58d2a8/third_party/WebKit/Source/modules/battery/BatteryDispatcher.cpp
[modify] https://crrev.com/8359caf0b6a4b86949be98b12147c926fb58d2a8/third_party/WebKit/Source/modules/encryptedmedia/ContentDecryptionModuleResultPromise.cpp
[modify] https://crrev.com/8359caf0b6a4b86949be98b12147c926fb58d2a8/third_party/WebKit/Source/modules/encryptedmedia/HTMLMediaElementEncryptedMedia.cpp
[modify] https://crrev.com/8359caf0b6a4b86949be98b12147c926fb58d2a8/third_party/WebKit/Source/modules/filesystem/LocalFileSystem.cpp
[modify] https://crrev.com/8359caf0b6a4b86949be98b12147c926fb58d2a8/third_party/WebKit/Source/modules/geolocation/Geolocation.cpp
[modify] https://crrev.com/8359caf0b6a4b86949be98b12147c926fb58d2a8/third_party/WebKit/Source/modules/imagecapture/ImageCapture.cpp
[modify] https://crrev.com/8359caf0b6a4b86949be98b12147c926fb58d2a8/third_party/WebKit/Source/modules/mediastream/RTCPeerConnection.cpp
[modify] https://crrev.com/8359caf0b6a4b86949be98b12147c926fb58d2a8/third_party/WebKit/Source/modules/nfc/NFC.cpp
[modify] https://crrev.com/8359caf0b6a4b86949be98b12147c926fb58d2a8/third_party/WebKit/Source/modules/notifications/Notification.cpp
[modify] https://crrev.com/8359caf0b6a4b86949be98b12147c926fb58d2a8/third_party/WebKit/Source/modules/quota/StorageErrorCallback.cpp
[modify] https://crrev.com/8359caf0b6a4b86949be98b12147c926fb58d2a8/third_party/WebKit/Source/modules/sensor/Sensor.cpp
[modify] https://crrev.com/8359caf0b6a4b86949be98b12147c926fb58d2a8/third_party/WebKit/Source/modules/vibration/VibrationController.cpp
[modify] https://crrev.com/8359caf0b6a4b86949be98b12147c926fb58d2a8/third_party/WebKit/Source/modules/vr/VRController.cpp
[modify] https://crrev.com/8359caf0b6a4b86949be98b12147c926fb58d2a8/third_party/WebKit/Source/modules/webaudio/AbstractAudioContext.cpp
[modify] https://crrev.com/8359caf0b6a4b86949be98b12147c926fb58d2a8/third_party/WebKit/Source/modules/webdatabase/Database.cpp
[modify] https://crrev.com/8359caf0b6a4b86949be98b12147c926fb58d2a8/third_party/WebKit/Source/modules/webdatabase/DatabaseThread.cpp
[modify] https://crrev.com/8359caf0b6a4b86949be98b12147c926fb58d2a8/third_party/WebKit/Source/modules/webdatabase/InspectorDatabaseAgent.cpp
[modify] https://crrev.com/8359caf0b6a4b86949be98b12147c926fb58d2a8/third_party/WebKit/Source/modules/webusb/USB.cpp
[modify] https://crrev.com/8359caf0b6a4b86949be98b12147c926fb58d2a8/third_party/WebKit/Source/modules/webusb/USBDevice.cpp
[modify] https://crrev.com/8359caf0b6a4b86949be98b12147c926fb58d2a8/third_party/WebKit/Source/modules/worklet/Worklet.cpp
[modify] https://crrev.com/8359caf0b6a4b86949be98b12147c926fb58d2a8/third_party/WebKit/Source/platform/heap/HeapTest.cpp
[modify] https://crrev.com/8359caf0b6a4b86949be98b12147c926fb58d2a8/third_party/WebKit/Source/web/ExternalPopupMenu.cpp
[modify] https://crrev.com/8359caf0b6a4b86949be98b12147c926fb58d2a8/third_party/WebKit/Source/web/PopupMenuImpl.cpp

Project Member

Comment 38 by bugdroid1@chromium.org, Jun 23 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/5639ac31ebb1996a1cdcb3480471b0e65a1ea94c

commit 5639ac31ebb1996a1cdcb3480471b0e65a1ea94c
Author: hiroshige <hiroshige@chromium.org>
Date: Thu Jun 23 09:55:03 2016

Introduce WTF::unretained() and WTF::crossThreadUnretained()

unretained() and crossThreadUnretained are used to annotate unretained raw
pointers bound by WTF::bind() and forbid raw pointers in WTF::bind().
crossThreadUnretained() is used for annotating pointers passed across threads
and corresponds to previous AllowCrossThreadAccess().

BUG= 597856 

Review-Url: https://codereview.chromium.org/1919723002
Cr-Commit-Position: refs/heads/master@{#401571}

[modify] https://crrev.com/5639ac31ebb1996a1cdcb3480471b0e65a1ea94c/third_party/WebKit/Source/wtf/Functional.h
[modify] https://crrev.com/5639ac31ebb1996a1cdcb3480471b0e65a1ea94c/third_party/WebKit/Source/wtf/FunctionalTest.cpp

Project Member

Comment 39 by bugdroid1@chromium.org, Jun 23 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/0df38bbadcc86525a08f663fb6b714657edd0a56

commit 0df38bbadcc86525a08f663fb6b714657edd0a56
Author: hiroshige <hiroshige@chromium.org>
Date: Thu Jun 23 10:46:54 2016

Replace AllowCrossThreadAccess() + non-GCed pointers with crossThreadUnretained())

This CL adds CrossThreadCopier for crossThreadUnretained() in CrossThreadCopier.h.
Other changes are made by:
  sed -i 's/AllowCrossThreadAccess/crossThreadUnretained/g'

BUG= 597856 
CQ_INCLUDE_TRYBOTS=tryserver.chromium.win:win_optional_gpu_tests_rel;tryserver.chromium.mac:mac_optional_gpu_tests_rel

Review-Url: https://codereview.chromium.org/1925583003
Cr-Commit-Position: refs/heads/master@{#401578}

[modify] https://crrev.com/0df38bbadcc86525a08f663fb6b714657edd0a56/third_party/WebKit/Source/bindings/core/v8/ScriptStreamer.cpp
[modify] https://crrev.com/0df38bbadcc86525a08f663fb6b714657edd0a56/third_party/WebKit/Source/core/dom/CrossThreadTask.h
[modify] https://crrev.com/0df38bbadcc86525a08f663fb6b714657edd0a56/third_party/WebKit/Source/core/html/parser/HTMLParserThread.cpp
[modify] https://crrev.com/0df38bbadcc86525a08f663fb6b714657edd0a56/third_party/WebKit/Source/core/imagebitmap/ImageBitmapFactories.cpp
[modify] https://crrev.com/0df38bbadcc86525a08f663fb6b714657edd0a56/third_party/WebKit/Source/core/loader/ThreadableLoaderTest.cpp
[modify] https://crrev.com/0df38bbadcc86525a08f663fb6b714657edd0a56/third_party/WebKit/Source/core/loader/WorkerThreadableLoader.cpp
[modify] https://crrev.com/0df38bbadcc86525a08f663fb6b714657edd0a56/third_party/WebKit/Source/core/page/NetworkStateNotifier.cpp
[modify] https://crrev.com/0df38bbadcc86525a08f663fb6b714657edd0a56/third_party/WebKit/Source/core/workers/InProcessWorkerMessagingProxy.cpp
[modify] https://crrev.com/0df38bbadcc86525a08f663fb6b714657edd0a56/third_party/WebKit/Source/core/workers/InProcessWorkerObjectProxy.cpp
[modify] https://crrev.com/0df38bbadcc86525a08f663fb6b714657edd0a56/third_party/WebKit/Source/core/workers/WorkerInspectorProxy.cpp
[modify] https://crrev.com/0df38bbadcc86525a08f663fb6b714657edd0a56/third_party/WebKit/Source/core/workers/WorkerThread.cpp
[modify] https://crrev.com/0df38bbadcc86525a08f663fb6b714657edd0a56/third_party/WebKit/Source/core/workers/WorkerThreadTest.cpp
[modify] https://crrev.com/0df38bbadcc86525a08f663fb6b714657edd0a56/third_party/WebKit/Source/core/workers/WorkerThreadTestHelper.h
[modify] https://crrev.com/0df38bbadcc86525a08f663fb6b714657edd0a56/third_party/WebKit/Source/modules/compositorworker/CompositorWorkerThread.cpp
[modify] https://crrev.com/0df38bbadcc86525a08f663fb6b714657edd0a56/third_party/WebKit/Source/modules/compositorworker/CompositorWorkerThreadTest.cpp
[modify] https://crrev.com/0df38bbadcc86525a08f663fb6b714657edd0a56/third_party/WebKit/Source/modules/fetch/DataConsumerHandleTestUtil.cpp
[modify] https://crrev.com/0df38bbadcc86525a08f663fb6b714657edd0a56/third_party/WebKit/Source/modules/fetch/DataConsumerHandleTestUtil.h
[modify] https://crrev.com/0df38bbadcc86525a08f663fb6b714657edd0a56/third_party/WebKit/Source/modules/fetch/DataConsumerTeeTest.cpp
[modify] https://crrev.com/0df38bbadcc86525a08f663fb6b714657edd0a56/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.cpp
[modify] https://crrev.com/0df38bbadcc86525a08f663fb6b714657edd0a56/third_party/WebKit/Source/platform/CrossThreadCopier.h
[modify] https://crrev.com/0df38bbadcc86525a08f663fb6b714657edd0a56/third_party/WebKit/Source/platform/audio/HRTFDatabaseLoader.cpp
[modify] https://crrev.com/0df38bbadcc86525a08f663fb6b714657edd0a56/third_party/WebKit/Source/platform/audio/ReverbConvolver.cpp
[modify] https://crrev.com/0df38bbadcc86525a08f663fb6b714657edd0a56/third_party/WebKit/Source/platform/exported/Platform.cpp
[modify] https://crrev.com/0df38bbadcc86525a08f663fb6b714657edd0a56/third_party/WebKit/Source/platform/graphics/Canvas2DLayerBridgeTest.cpp
[modify] https://crrev.com/0df38bbadcc86525a08f663fb6b714657edd0a56/third_party/WebKit/Source/platform/graphics/DeferredImageDecoderTest.cpp
[modify] https://crrev.com/0df38bbadcc86525a08f663fb6b714657edd0a56/third_party/WebKit/Source/platform/heap/HeapTest.cpp
[modify] https://crrev.com/0df38bbadcc86525a08f663fb6b714657edd0a56/third_party/WebKit/Source/platform/threading/BackgroundTaskRunnerTest.cpp
[modify] https://crrev.com/0df38bbadcc86525a08f663fb6b714657edd0a56/third_party/WebKit/Source/web/CompositorMutatorImpl.cpp
[modify] https://crrev.com/0df38bbadcc86525a08f663fb6b714657edd0a56/third_party/WebKit/Source/web/ServiceWorkerGlobalScopeProxy.cpp
[modify] https://crrev.com/0df38bbadcc86525a08f663fb6b714657edd0a56/third_party/WebKit/Source/web/WebSharedWorkerImpl.cpp
[modify] https://crrev.com/0df38bbadcc86525a08f663fb6b714657edd0a56/third_party/WebKit/Source/web/tests/SpinLockTest.cpp

Project Member

Comment 40 by bugdroid1@chromium.org, Jun 23 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/229c0a1fa80fb523ccaffa73c002e601e162ccb9

commit 229c0a1fa80fb523ccaffa73c002e601e162ccb9
Author: tzik <tzik@chromium.org>
Date: Thu Jun 23 14:43:05 2016

Wrap non-GCed raw pointer parameters of WTF::bind with WTF::unretained

This CL wraps all raw pointer parameters of WTF::bind with WTF::unretained,
as a preparation of raw pointer removal on WTF::bind.

BUG= 597856 

Review-Url: https://codereview.chromium.org/2093603002
Cr-Commit-Position: refs/heads/master@{#401604}

[modify] https://crrev.com/229c0a1fa80fb523ccaffa73c002e601e162ccb9/third_party/WebKit/Source/core/dom/MainThreadTaskRunnerTest.cpp
[modify] https://crrev.com/229c0a1fa80fb523ccaffa73c002e601e162ccb9/third_party/WebKit/Source/core/loader/DocumentThreadableLoader.cpp
[modify] https://crrev.com/229c0a1fa80fb523ccaffa73c002e601e162ccb9/third_party/WebKit/Source/core/page/NetworkStateNotifierTest.cpp
[modify] https://crrev.com/229c0a1fa80fb523ccaffa73c002e601e162ccb9/third_party/WebKit/Source/modules/fetch/DataConsumerHandleTestUtil.cpp
[modify] https://crrev.com/229c0a1fa80fb523ccaffa73c002e601e162ccb9/third_party/WebKit/Source/modules/fetch/DataConsumerHandleTestUtil.h
[modify] https://crrev.com/229c0a1fa80fb523ccaffa73c002e601e162ccb9/third_party/WebKit/Source/modules/fetch/DataConsumerHandleUtil.cpp
[modify] https://crrev.com/229c0a1fa80fb523ccaffa73c002e601e162ccb9/third_party/WebKit/Source/modules/notifications/NotificationResourcesLoaderTest.cpp
[modify] https://crrev.com/229c0a1fa80fb523ccaffa73c002e601e162ccb9/third_party/WebKit/Source/modules/worklet/Worklet.cpp
[modify] https://crrev.com/229c0a1fa80fb523ccaffa73c002e601e162ccb9/third_party/WebKit/Source/platform/graphics/CanvasSurfaceLayerBridge.cpp
[modify] https://crrev.com/229c0a1fa80fb523ccaffa73c002e601e162ccb9/third_party/WebKit/Source/platform/graphics/RecordingImageBufferSurfaceTest.cpp
[modify] https://crrev.com/229c0a1fa80fb523ccaffa73c002e601e162ccb9/third_party/WebKit/Source/platform/heap/ThreadState.cpp
[modify] https://crrev.com/229c0a1fa80fb523ccaffa73c002e601e162ccb9/third_party/WebKit/Source/platform/scheduler/CancellableTaskFactory.h
[modify] https://crrev.com/229c0a1fa80fb523ccaffa73c002e601e162ccb9/third_party/WebKit/Source/platform/scheduler/CancellableTaskFactoryTest.cpp
[modify] https://crrev.com/229c0a1fa80fb523ccaffa73c002e601e162ccb9/third_party/WebKit/Source/web/WebEmbeddedWorkerImpl.cpp
[modify] https://crrev.com/229c0a1fa80fb523ccaffa73c002e601e162ccb9/third_party/WebKit/Source/web/WebSharedWorkerImpl.cpp
[modify] https://crrev.com/229c0a1fa80fb523ccaffa73c002e601e162ccb9/third_party/WebKit/Source/web/tests/FrameTestHelpers.cpp

Project Member

Comment 41 by bugdroid1@chromium.org, Jun 24 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/4b2899d40575fd381ba861b4a711a20ab39bc1d3

commit 4b2899d40575fd381ba861b4a711a20ab39bc1d3
Author: tzik <tzik@chromium.org>
Date: Fri Jun 24 16:33:24 2016

Specialize base::IsWeakReceiver for Blink weak pointers to support base::Bind

* Specialize base::IsWeakReceiver for Blink weak pointers, so that
  base::Bind can handle them as weak pointers.
* Unify method invocation forms in WTF::FunctionWrapper using
  base::IsWeakReceiver.
* Add wrapWeakPersistent() and wrapCrossThreadWeakPersistent().
* Remove WeakPersistentThisPointer and CrossThreadWeakPersistentThisPointer,
  which are no longer needed.

BUG= 597856 
CQ_INCLUDE_TRYBOTS=tryserver.chromium.win:win_optional_gpu_tests_rel;tryserver.chromium.mac:mac_optional_gpu_tests_rel

Review-Url: https://codereview.chromium.org/2091713002
Cr-Commit-Position: refs/heads/master@{#401878}

[modify] https://crrev.com/4b2899d40575fd381ba861b4a711a20ab39bc1d3/third_party/WebKit/Source/core/dom/ElementVisibilityObserver.cpp
[modify] https://crrev.com/4b2899d40575fd381ba861b4a711a20ab39bc1d3/third_party/WebKit/Source/core/dom/MessagePort.cpp
[modify] https://crrev.com/4b2899d40575fd381ba861b4a711a20ab39bc1d3/third_party/WebKit/Source/core/dom/ScriptRunner.cpp
[modify] https://crrev.com/4b2899d40575fd381ba861b4a711a20ab39bc1d3/third_party/WebKit/Source/core/dom/custom/V0CustomElementMicrotaskRunQueue.cpp
[modify] https://crrev.com/4b2899d40575fd381ba861b4a711a20ab39bc1d3/third_party/WebKit/Source/core/fetch/ImageResource.cpp
[modify] https://crrev.com/4b2899d40575fd381ba861b4a711a20ab39bc1d3/third_party/WebKit/Source/modules/geolocation/Geolocation.cpp
[modify] https://crrev.com/4b2899d40575fd381ba861b4a711a20ab39bc1d3/third_party/WebKit/Source/modules/imagecapture/ImageCapture.cpp
[modify] https://crrev.com/4b2899d40575fd381ba861b4a711a20ab39bc1d3/third_party/WebKit/Source/modules/nfc/NFC.cpp
[modify] https://crrev.com/4b2899d40575fd381ba861b4a711a20ab39bc1d3/third_party/WebKit/Source/modules/notifications/Notification.cpp
[modify] https://crrev.com/4b2899d40575fd381ba861b4a711a20ab39bc1d3/third_party/WebKit/Source/modules/notifications/NotificationResourcesLoader.cpp
[modify] https://crrev.com/4b2899d40575fd381ba861b4a711a20ab39bc1d3/third_party/WebKit/Source/modules/notifications/ServiceWorkerRegistrationNotifications.cpp
[modify] https://crrev.com/4b2899d40575fd381ba861b4a711a20ab39bc1d3/third_party/WebKit/Source/modules/payments/PaymentRequest.cpp
[modify] https://crrev.com/4b2899d40575fd381ba861b4a711a20ab39bc1d3/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.cpp
[modify] https://crrev.com/4b2899d40575fd381ba861b4a711a20ab39bc1d3/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.h
[modify] https://crrev.com/4b2899d40575fd381ba861b4a711a20ab39bc1d3/third_party/WebKit/Source/modules/webusb/USB.cpp
[modify] https://crrev.com/4b2899d40575fd381ba861b4a711a20ab39bc1d3/third_party/WebKit/Source/modules/webusb/USBDevice.cpp
[modify] https://crrev.com/4b2899d40575fd381ba861b4a711a20ab39bc1d3/third_party/WebKit/Source/platform/CrossThreadCopier.h
[modify] https://crrev.com/4b2899d40575fd381ba861b4a711a20ab39bc1d3/third_party/WebKit/Source/platform/heap/Member.h
[modify] https://crrev.com/4b2899d40575fd381ba861b4a711a20ab39bc1d3/third_party/WebKit/Source/platform/heap/Persistent.h
[add] https://crrev.com/4b2899d40575fd381ba861b4a711a20ab39bc1d3/third_party/WebKit/Source/platform/heap/PersistentTest.cpp
[modify] https://crrev.com/4b2899d40575fd381ba861b4a711a20ab39bc1d3/third_party/WebKit/Source/platform/heap/blink_heap.gypi
[modify] https://crrev.com/4b2899d40575fd381ba861b4a711a20ab39bc1d3/third_party/WebKit/Source/platform/scheduler/CancellableTaskFactory.h
[modify] https://crrev.com/4b2899d40575fd381ba861b4a711a20ab39bc1d3/third_party/WebKit/Source/wtf/Functional.h
[modify] https://crrev.com/4b2899d40575fd381ba861b4a711a20ab39bc1d3/third_party/WebKit/Source/wtf/FunctionalTest.cpp

Project Member

Comment 42 by bugdroid1@chromium.org, Jun 27 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/74736be3a74e419cbd88bf36e3855f375b913db5

commit 74736be3a74e419cbd88bf36e3855f375b913db5
Author: tzik <tzik@chromium.org>
Date: Mon Jun 27 04:58:39 2016

Update ParamStorageTraits to disallow raw pointers and Member<>

This CL removes ParamStorageTraits for pointers and add static_assert to
ban raw pointers and Member<>, so that WTF::bind and blink::threadSafeBind
start rejecting them.

BUG= 597856 

Review-Url: https://codereview.chromium.org/2096623002
Cr-Commit-Position: refs/heads/master@{#402113}

[modify] https://crrev.com/74736be3a74e419cbd88bf36e3855f375b913db5/third_party/WebKit/Source/wtf/Functional.h

Project Member

Comment 43 by bugdroid1@chromium.org, Jun 27 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/db416620d2201afc6e2c7e89bfb1fad5e99fc22e

commit db416620d2201afc6e2c7e89bfb1fad5e99fc22e
Author: tzik <tzik@chromium.org>
Date: Mon Jun 27 07:07:17 2016

Remove ParamStorageTraits::wrap and move unwrap to global scope

This removes ParamStorageTraits::wrap, which is no longer needed. Also,
moves ParamStorageTraits::unwrap to the global scope to align the usage
of base::internal::Unwrap.

BUG= 597856 

Review-Url: https://codereview.chromium.org/2097013002
Cr-Commit-Position: refs/heads/master@{#402127}

[modify] https://crrev.com/db416620d2201afc6e2c7e89bfb1fad5e99fc22e/third_party/WebKit/Source/wtf/Functional.h
[modify] https://crrev.com/db416620d2201afc6e2c7e89bfb1fad5e99fc22e/third_party/WebKit/Source/wtf/FunctionalTest.cpp

Comment 45 by tzik@chromium.org, Jun 27 2016

Status: Fixed (was: Started)
Project Member

Comment 46 by bugdroid1@chromium.org, Jun 29 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/09cd25de3d232f5907a2d845f0ca0bf72ed36d67

commit 09cd25de3d232f5907a2d845f0ca0bf72ed36d67
Author: hiroshige <hiroshige@chromium.org>
Date: Wed Jun 29 06:17:27 2016

Disallow Member<T> in CrossThreadCopier

BUG= 597856 

Review-Url: https://codereview.chromium.org/2103813002
Cr-Commit-Position: refs/heads/master@{#402738}

[modify] https://crrev.com/09cd25de3d232f5907a2d845f0ca0bf72ed36d67/third_party/WebKit/Source/platform/CrossThreadCopier.h

Project Member

Comment 47 by bugdroid1@chromium.org, Jun 29 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/a0bfe901bac20bdf3d8b9ffd00bbef92e61df2b0

commit a0bfe901bac20bdf3d8b9ffd00bbef92e61df2b0
Author: hiroshige <hiroshige@chromium.org>
Date: Wed Jun 29 06:26:29 2016

Disallow raw pointers in CrossThreadCopier/threadSafeBind()

BUG= 597856 

Review-Url: https://codereview.chromium.org/2103823002
Cr-Commit-Position: refs/heads/master@{#402739}

[modify] https://crrev.com/a0bfe901bac20bdf3d8b9ffd00bbef92e61df2b0/third_party/WebKit/Source/modules/fetch/CompositeDataConsumerHandle.cpp
[modify] https://crrev.com/a0bfe901bac20bdf3d8b9ffd00bbef92e61df2b0/third_party/WebKit/Source/modules/fetch/CompositeDataConsumerHandleTest.cpp
[modify] https://crrev.com/a0bfe901bac20bdf3d8b9ffd00bbef92e61df2b0/third_party/WebKit/Source/modules/fetch/DataConsumerHandleTestUtil.cpp
[modify] https://crrev.com/a0bfe901bac20bdf3d8b9ffd00bbef92e61df2b0/third_party/WebKit/Source/modules/fetch/DataConsumerHandleTestUtil.h
[modify] https://crrev.com/a0bfe901bac20bdf3d8b9ffd00bbef92e61df2b0/third_party/WebKit/Source/modules/fetch/DataConsumerTee.cpp
[modify] https://crrev.com/a0bfe901bac20bdf3d8b9ffd00bbef92e61df2b0/third_party/WebKit/Source/modules/webaudio/AsyncAudioDecoder.cpp
[modify] https://crrev.com/a0bfe901bac20bdf3d8b9ffd00bbef92e61df2b0/third_party/WebKit/Source/modules/webaudio/OfflineAudioDestinationNode.cpp
[modify] https://crrev.com/a0bfe901bac20bdf3d8b9ffd00bbef92e61df2b0/third_party/WebKit/Source/platform/CrossThreadCopier.cpp
[modify] https://crrev.com/a0bfe901bac20bdf3d8b9ffd00bbef92e61df2b0/third_party/WebKit/Source/platform/CrossThreadCopier.h
[modify] https://crrev.com/a0bfe901bac20bdf3d8b9ffd00bbef92e61df2b0/third_party/WebKit/Source/wtf/PassRefPtr.h

Project Member

Comment 48 by bugdroid1@chromium.org, Jun 29 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/f2b88d1e91a969a91bc4ca9bdebb4dd1bd0edfdd

commit f2b88d1e91a969a91bc4ca9bdebb4dd1bd0edfdd
Author: sigbjornf <sigbjornf@opera.com>
Date: Wed Jun 29 15:54:12 2016

Tidy CrossThreadCopier.h inclusion.

This header file declares a set of types as being cross-copiable; avoid
bringing in all of Oilpan for its two cross-thread persistent types.

Tidy up some downstream header files which were implicitly depending on
Oilpan being included here.

R=
BUG= 597856 , 624419

Review-Url: https://codereview.chromium.org/2104283002
Cr-Commit-Position: refs/heads/master@{#402823}

[modify] https://crrev.com/f2b88d1e91a969a91bc4ca9bdebb4dd1bd0edfdd/third_party/WebKit/Source/modules/fetch/FetchBlobDataConsumerHandle.h
[modify] https://crrev.com/f2b88d1e91a969a91bc4ca9bdebb4dd1bd0edfdd/third_party/WebKit/Source/platform/CrossThreadCopier.h
[modify] https://crrev.com/f2b88d1e91a969a91bc4ca9bdebb4dd1bd0edfdd/third_party/WebKit/Source/platform/heap/PersistentTest.cpp

Project Member

Comment 49 by bugdroid1@chromium.org, Jun 30 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/f92842facb2524fba2e27126ed83044262fdcad2

commit f92842facb2524fba2e27126ed83044262fdcad2
Author: hiroshige <hiroshige@chromium.org>
Date: Thu Jun 30 02:20:08 2016

Rename threadSafeBind() to crossThreadBind()

BUG= 597856 
CQ_INCLUDE_TRYBOTS=tryserver.chromium.win:win_optional_gpu_tests_rel;tryserver.chromium.mac:mac_optional_gpu_tests_rel

Review-Url: https://codereview.chromium.org/2104913002
Cr-Commit-Position: refs/heads/master@{#403069}

[modify] https://crrev.com/f92842facb2524fba2e27126ed83044262fdcad2/third_party/WebKit/Source/bindings/core/v8/ScriptStreamer.cpp
[modify] https://crrev.com/f92842facb2524fba2e27126ed83044262fdcad2/third_party/WebKit/Source/core/dom/CompositorProxy.cpp
[modify] https://crrev.com/f92842facb2524fba2e27126ed83044262fdcad2/third_party/WebKit/Source/core/dom/CrossThreadTask.h
[modify] https://crrev.com/f92842facb2524fba2e27126ed83044262fdcad2/third_party/WebKit/Source/core/dom/MainThreadTaskRunner.cpp
[modify] https://crrev.com/f92842facb2524fba2e27126ed83044262fdcad2/third_party/WebKit/Source/core/html/canvas/CanvasAsyncBlobCreator.cpp
[modify] https://crrev.com/f92842facb2524fba2e27126ed83044262fdcad2/third_party/WebKit/Source/core/html/parser/BackgroundHTMLParser.cpp
[modify] https://crrev.com/f92842facb2524fba2e27126ed83044262fdcad2/third_party/WebKit/Source/core/html/parser/HTMLDocumentParser.cpp
[modify] https://crrev.com/f92842facb2524fba2e27126ed83044262fdcad2/third_party/WebKit/Source/core/html/parser/HTMLParserThread.cpp
[modify] https://crrev.com/f92842facb2524fba2e27126ed83044262fdcad2/third_party/WebKit/Source/core/imagebitmap/ImageBitmapFactories.cpp
[modify] https://crrev.com/f92842facb2524fba2e27126ed83044262fdcad2/third_party/WebKit/Source/core/loader/WorkerThreadableLoader.cpp
[modify] https://crrev.com/f92842facb2524fba2e27126ed83044262fdcad2/third_party/WebKit/Source/core/workers/WorkerBackingThread.cpp
[modify] https://crrev.com/f92842facb2524fba2e27126ed83044262fdcad2/third_party/WebKit/Source/core/workers/WorkerInspectorProxy.cpp
[modify] https://crrev.com/f92842facb2524fba2e27126ed83044262fdcad2/third_party/WebKit/Source/core/workers/WorkerThread.cpp
[modify] https://crrev.com/f92842facb2524fba2e27126ed83044262fdcad2/third_party/WebKit/Source/core/workers/WorkerThreadTest.cpp
[modify] https://crrev.com/f92842facb2524fba2e27126ed83044262fdcad2/third_party/WebKit/Source/core/workers/WorkerThreadTestHelper.h
[modify] https://crrev.com/f92842facb2524fba2e27126ed83044262fdcad2/third_party/WebKit/Source/modules/compositorworker/CompositorWorkerThread.cpp
[modify] https://crrev.com/f92842facb2524fba2e27126ed83044262fdcad2/third_party/WebKit/Source/modules/compositorworker/CompositorWorkerThreadTest.cpp
[modify] https://crrev.com/f92842facb2524fba2e27126ed83044262fdcad2/third_party/WebKit/Source/modules/fetch/CompositeDataConsumerHandle.cpp
[modify] https://crrev.com/f92842facb2524fba2e27126ed83044262fdcad2/third_party/WebKit/Source/modules/fetch/CompositeDataConsumerHandleTest.cpp
[modify] https://crrev.com/f92842facb2524fba2e27126ed83044262fdcad2/third_party/WebKit/Source/modules/fetch/DataConsumerHandleTestUtil.cpp
[modify] https://crrev.com/f92842facb2524fba2e27126ed83044262fdcad2/third_party/WebKit/Source/modules/fetch/DataConsumerHandleTestUtil.h
[modify] https://crrev.com/f92842facb2524fba2e27126ed83044262fdcad2/third_party/WebKit/Source/modules/fetch/DataConsumerTee.cpp
[modify] https://crrev.com/f92842facb2524fba2e27126ed83044262fdcad2/third_party/WebKit/Source/modules/fetch/DataConsumerTeeTest.cpp
[modify] https://crrev.com/f92842facb2524fba2e27126ed83044262fdcad2/third_party/WebKit/Source/modules/fetch/FetchBlobDataConsumerHandle.cpp
[modify] https://crrev.com/f92842facb2524fba2e27126ed83044262fdcad2/third_party/WebKit/Source/modules/webaudio/AbstractAudioContext.cpp
[modify] https://crrev.com/f92842facb2524fba2e27126ed83044262fdcad2/third_party/WebKit/Source/modules/webaudio/AsyncAudioDecoder.cpp
[modify] https://crrev.com/f92842facb2524fba2e27126ed83044262fdcad2/third_party/WebKit/Source/modules/webaudio/DeferredTaskHandler.cpp
[modify] https://crrev.com/f92842facb2524fba2e27126ed83044262fdcad2/third_party/WebKit/Source/modules/webaudio/OfflineAudioDestinationNode.cpp
[modify] https://crrev.com/f92842facb2524fba2e27126ed83044262fdcad2/third_party/WebKit/Source/modules/webdatabase/DatabaseThread.cpp
[modify] https://crrev.com/f92842facb2524fba2e27126ed83044262fdcad2/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.cpp
[rename] https://crrev.com/f92842facb2524fba2e27126ed83044262fdcad2/third_party/WebKit/Source/platform/CrossThreadFunctional.h
[modify] https://crrev.com/f92842facb2524fba2e27126ed83044262fdcad2/third_party/WebKit/Source/platform/audio/HRTFDatabaseLoader.cpp
[modify] https://crrev.com/f92842facb2524fba2e27126ed83044262fdcad2/third_party/WebKit/Source/platform/audio/ReverbConvolver.cpp
[modify] https://crrev.com/f92842facb2524fba2e27126ed83044262fdcad2/third_party/WebKit/Source/platform/blob/BlobRegistry.cpp
[modify] https://crrev.com/f92842facb2524fba2e27126ed83044262fdcad2/third_party/WebKit/Source/platform/exported/Platform.cpp
[modify] https://crrev.com/f92842facb2524fba2e27126ed83044262fdcad2/third_party/WebKit/Source/platform/graphics/Canvas2DLayerBridgeTest.cpp
[modify] https://crrev.com/f92842facb2524fba2e27126ed83044262fdcad2/third_party/WebKit/Source/platform/graphics/DeferredImageDecoderTest.cpp
[modify] https://crrev.com/f92842facb2524fba2e27126ed83044262fdcad2/third_party/WebKit/Source/platform/graphics/ImageFrameGeneratorTest.cpp
[modify] https://crrev.com/f92842facb2524fba2e27126ed83044262fdcad2/third_party/WebKit/Source/platform/heap/GCTaskRunner.h
[modify] https://crrev.com/f92842facb2524fba2e27126ed83044262fdcad2/third_party/WebKit/Source/platform/heap/HeapTest.cpp
[modify] https://crrev.com/f92842facb2524fba2e27126ed83044262fdcad2/third_party/WebKit/Source/platform/heap/PersistentTest.cpp
[modify] https://crrev.com/f92842facb2524fba2e27126ed83044262fdcad2/third_party/WebKit/Source/platform/threading/BackgroundTaskRunnerTest.cpp
[modify] https://crrev.com/f92842facb2524fba2e27126ed83044262fdcad2/third_party/WebKit/Source/web/CompositorMutatorImpl.cpp
[modify] https://crrev.com/f92842facb2524fba2e27126ed83044262fdcad2/third_party/WebKit/Source/web/WebDevToolsAgentImpl.cpp
[modify] https://crrev.com/f92842facb2524fba2e27126ed83044262fdcad2/third_party/WebKit/Source/web/WebSharedWorkerImpl.cpp
[modify] https://crrev.com/f92842facb2524fba2e27126ed83044262fdcad2/third_party/WebKit/Source/web/tests/SpinLockTest.cpp
[modify] https://crrev.com/f92842facb2524fba2e27126ed83044262fdcad2/third_party/WebKit/Source/wtf/Functional.h

Project Member

Comment 50 by bugdroid1@chromium.org, Jul 6 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/3471badf1d6ebda5f85f2b6bebfd1c4739b50993

commit 3471badf1d6ebda5f85f2b6bebfd1c4739b50993
Author: hiroshige <hiroshige@chromium.org>
Date: Wed Jul 06 09:42:32 2016

Remove tuple-related includes and comments in Functional.h

After https://codereview.chromium.org/2092093002, tuples are no longer used
directly in Functional.h.

BUG= 597856 

Review-Url: https://codereview.chromium.org/2123883002
Cr-Commit-Position: refs/heads/master@{#403875}

[modify] https://crrev.com/3471badf1d6ebda5f85f2b6bebfd1c4739b50993/third_party/WebKit/Source/wtf/Functional.h

Sign in to add a comment