[go: nahoru, domu]

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",