Introduce notification_helper.exe to handle Win10 toast activation
This CL consists of the following main changes:
1) Introduce a new EXE: notification_helper.exe. It servers as a COM server
which is invoked whenever there is activation from toast notifications.
2) Introduce a new class called NotificationActivator which implements the
INotificationActivationCallBack interface.
3) Each time notification_helper.exe is invoked, it registers the
NotificationActivator class object to a COM module. This allows COM to
create the object in the COM server and call the object's Activate() method
to handle toast activation when required. Then the NotificationActivator
class is unregistered from the module. This CL does not change the existing
toast activation behavior which requires Chrome to be running.
4) After the unregistration of the NotificationActivator class,
notification_helper.exe exits. A waitable event is used to prevent the EXE
from exiting until the registration, activatation, and unregistration steps
are finished.
5) Construct notification_helper_unittests for the new EXE and classes.
A number of changes will be landed after this CL, including:
1) Run notification_helper_unittests on buildbots.
2) Add installation/uninstallation support for notification_helper.exe. The
changes in chrome/installer/ in this CL will be reused there.
3) Implement NotificationActivator::Activate() to handle toast activation when
Chrome is not running.
More details can be referred to the design doc:
https://docs.google.com/document/d/166-JAOZ7AscdpjwNejSm4EfCqgylN4FrzusWPJEBYU4/edit?usp=sharing
Bug: 734095
Change-Id: Iacd9fb8bdb69f88667c7d81eade448e7a4d1e4ac
Reviewed-on: https://chromium-review.googlesource.com/868750
Commit-Queue: Xi Cheng <chengx@chromium.org>
Reviewed-by: Gabriel Charette <gab@chromium.org>
Reviewed-by: Finnur Thorarinsson <finnur@chromium.org>
Reviewed-by: Robert Liao <robliao@chromium.org>
Reviewed-by: Jason Kersey <kerz@chromium.org>
Reviewed-by: Scott Violet <sky@chromium.org>
Cr-Commit-Position: refs/heads/master@{#536790}
diff --git a/BUILD.gn b/BUILD.gn
index 74e66305..da0378d9 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -571,6 +571,7 @@
"//components/wifi:wifi_test",
"//net:quic_client",
"//net:quic_server",
+ "//notification_helper:notification_helper_unittests",
"//sandbox/win:pocdll",
"//sandbox/win:sandbox_poc",
"//sandbox/win:sbox_integration_tests",