PSA: WTF::Function is gone, but you should still use WTF::Bind or WTF::BindRepeating

52 views
Skip to first unread message

Yuta Kitamura

unread,
Dec 15, 2017, 6:04:28 AM12/15/17
to blink-dev, Taiju Tsuiki, Kentaro Hara
Hi all,

As part of our cleanup effort, WTF::Function is now gone; WTF::Bind() now directly returns base::OnceCallback.

WTF::Bind() still exists, though, and you actually still need to keep using it. Unlike base::Bind(), WTF::Bind() does some static type checking on Oilpan types, and it also adds code that checks threading usage on debug builds. Currently, there's no plan to deprecate WTF::Bind().

Also, a new variant of WTF::Bind() has been introduced: WTF::BindRepeating(). This creates base::RepeatingCallback, which is for callbacks that may be called multiple times.

For cross-thread callbacks, nothing has changed: use blink::CrossThreadBind() (defined in platform/CrossThreadFunctional.h). It returns WTF::CrossThreadFunction, and this will not change soon.

To sum up:
  • To create a cross-thread callback: use blink::CrossThreadBind(), which returns WTF::CrossThreadFunction.
  • To create a single-threaded callback that's called only once: use WTF::Bind(), which returns base::OnceCallback.
  • To create a single-threaded callback that may be called many times: use WTF::BindRepeating(), which returns base::RepeatingCallback.

Thanks,
Yuta

Kentaro Hara

unread,
Dec 15, 2017, 6:10:35 AM12/15/17
to Yuta Kitamura, blink-dev, Taiju Tsuiki
Excellent! \o/


--
Kentaro Hara, Tokyo, Japan

Hiroki Nakagawa

unread,
Dec 15, 2017, 6:52:07 AM12/15/17
to Kentaro Hara, Yuta Kitamura, blink-dev, Taiju Tsuiki
Nice! Do you have a plan to rename WTF::Bind to WTF::BindOnce for consistency with base::BindOnce? I'm just curious.

--
You received this message because you are subscribed to the Google Groups "blink-dev" group.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CABg10jxsU3dpXb6G-2y5UnAd6FNRjYT5ZuV0Vjb0WOQX-W69WA%40mail.gmail.com.

Yuta Kitamura

unread,
Dec 15, 2017, 7:05:36 AM12/15/17
to Hiroki Nakagawa, Kentaro Hara, blink-dev, Taiju Tsuiki
I heard //base's plan was to have base::Bind (for once) and base::BindRepeating and remove base::BindOnce in the end. So actually WTF's current setup matches //base's final state.

2017/12/15 20:52 "Hiroki Nakagawa" <nhi...@chromium.org>:

Hiroki Nakagawa

unread,
Dec 15, 2017, 7:15:49 AM12/15/17
to Yuta Kitamura, Kentaro Hara, blink-dev, Taiju Tsuiki
Thanks! I didn't know it :)
Reply all
Reply to author
Forward
0 new messages