Commit 78c7bf23 authored by Finnur Thorarinsson's avatar Finnur Thorarinsson Committed by Commit Bot

Native Notifications: A bit of cleanup.

Remove helper functions for posting tasks
and a bit of header cleanup.

Note: This was split of from review:
https://chromium-review.googlesource.com/c/chromium/src/+/963685

Bug: 734095
Change-Id: If3a58f70c1ffcc63c2998adc27eb885f20f8fe46
Reviewed-on: https://chromium-review.googlesource.com/963324
Commit-Queue: Finnur Thorarinsson <finnur@chromium.org>
Reviewed-by: default avatarXi Cheng <chengx@chromium.org>
Reviewed-by: default avatarPeter Beverloo <peter@chromium.org>
Reviewed-by: default avatarGreg Thompson <grt@chromium.org>
Cr-Commit-Position: refs/heads/master@{#544038}
parent 570f2990
...@@ -268,8 +268,10 @@ class NotificationPlatformBridgeLinuxImpl ...@@ -268,8 +268,10 @@ class NotificationPlatformBridgeLinuxImpl
gfx::Image(*ui::ResourceBundle::GetSharedInstance().GetImageSkiaNamed( gfx::Image(*ui::ResourceBundle::GetSharedInstance().GetImageSkiaNamed(
IDR_PRODUCT_LOGO_256)) IDR_PRODUCT_LOGO_256))
.As1xPNGBytes(); .As1xPNGBytes();
PostTaskToTaskRunnerThread(base::BindOnce( task_runner_->PostTask(
&NotificationPlatformBridgeLinuxImpl::InitOnTaskRunner, this)); FROM_HERE,
base::BindOnce(&NotificationPlatformBridgeLinuxImpl::InitOnTaskRunner,
this));
} }
void Display( void Display(
...@@ -285,7 +287,9 @@ class NotificationPlatformBridgeLinuxImpl ...@@ -285,7 +287,9 @@ class NotificationPlatformBridgeLinuxImpl
notification, body_images_supported_.value(), notification, body_images_supported_.value(),
/*include_small_image=*/false, /*include_icon_images=*/false); /*include_small_image=*/false, /*include_icon_images=*/false);
PostTaskToTaskRunnerThread(base::BindOnce( task_runner_->PostTask(
FROM_HERE,
base::BindOnce(
&NotificationPlatformBridgeLinuxImpl::DisplayOnTaskRunner, this, &NotificationPlatformBridgeLinuxImpl::DisplayOnTaskRunner, this,
notification_type, profile_id, is_incognito, notification_type, profile_id, is_incognito,
std::move(notification_copy))); std::move(notification_copy)));
...@@ -294,7 +298,8 @@ class NotificationPlatformBridgeLinuxImpl ...@@ -294,7 +298,8 @@ class NotificationPlatformBridgeLinuxImpl
void Close(const std::string& profile_id, void Close(const std::string& profile_id,
const std::string& notification_id) override { const std::string& notification_id) override {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI); DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
PostTaskToTaskRunnerThread( task_runner_->PostTask(
FROM_HERE,
base::BindOnce(&NotificationPlatformBridgeLinuxImpl::CloseOnTaskRunner, base::BindOnce(&NotificationPlatformBridgeLinuxImpl::CloseOnTaskRunner,
this, profile_id, notification_id)); this, profile_id, notification_id));
} }
...@@ -304,9 +309,11 @@ class NotificationPlatformBridgeLinuxImpl ...@@ -304,9 +309,11 @@ class NotificationPlatformBridgeLinuxImpl
bool incognito, bool incognito,
const GetDisplayedNotificationsCallback& callback) const override { const GetDisplayedNotificationsCallback& callback) const override {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI); DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
PostTaskToTaskRunnerThread(base::BindOnce( task_runner_->PostTask(
&NotificationPlatformBridgeLinuxImpl::GetDisplayedOnTaskRunner, this, FROM_HERE,
profile_id, incognito, callback)); base::BindOnce(
&NotificationPlatformBridgeLinuxImpl::GetDisplayedOnTaskRunner,
this, profile_id, incognito, callback));
} }
void SetReadyCallback(NotificationBridgeReadyCallback callback) override { void SetReadyCallback(NotificationBridgeReadyCallback callback) override {
...@@ -320,7 +327,9 @@ class NotificationPlatformBridgeLinuxImpl ...@@ -320,7 +327,9 @@ class NotificationPlatformBridgeLinuxImpl
void CleanUp() { void CleanUp() {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI); DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
PostTaskToTaskRunnerThread(base::BindOnce( task_runner_->PostTask(
FROM_HERE,
base::BindOnce(
&NotificationPlatformBridgeLinuxImpl::CleanUpOnTaskRunner, this)); &NotificationPlatformBridgeLinuxImpl::CleanUpOnTaskRunner, this));
} }
...@@ -385,20 +394,6 @@ class NotificationPlatformBridgeLinuxImpl ...@@ -385,20 +394,6 @@ class NotificationPlatformBridgeLinuxImpl
body_images_supported_ = body_images_supported; body_images_supported_ = body_images_supported;
} }
void PostTaskToUiThread(base::OnceClosure closure) const {
DCHECK(task_runner_->RunsTasksInCurrentSequence());
bool success = content::BrowserThread::PostTask(
content::BrowserThread::UI, FROM_HERE, std::move(closure));
DCHECK(success);
}
void PostTaskToTaskRunnerThread(base::OnceClosure closure) const {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
DCHECK(task_runner_);
bool success = task_runner_->PostTask(FROM_HERE, std::move(closure));
DCHECK(success);
}
// Sets up the D-Bus connection. // Sets up the D-Bus connection.
void InitOnTaskRunner() { void InitOnTaskRunner() {
DCHECK(task_runner_->RunsTasksInCurrentSequence()); DCHECK(task_runner_->RunsTasksInCurrentSequence());
...@@ -440,7 +435,9 @@ class NotificationPlatformBridgeLinuxImpl ...@@ -440,7 +435,9 @@ class NotificationPlatformBridgeLinuxImpl
ConnectionInitializationStatusCode::MISSING_REQUIRED_CAPABILITIES); ConnectionInitializationStatusCode::MISSING_REQUIRED_CAPABILITIES);
return; return;
} }
PostTaskToUiThread(base::BindOnce( content::BrowserThread::PostTask(
content::BrowserThread::UI, FROM_HERE,
base::BindOnce(
&NotificationPlatformBridgeLinuxImpl::SetBodyImagesSupported, this, &NotificationPlatformBridgeLinuxImpl::SetBodyImagesSupported, this,
base::ContainsKey(capabilities_, kCapabilityBodyImages))); base::ContainsKey(capabilities_, kCapabilityBodyImages)));
...@@ -731,7 +728,9 @@ class NotificationPlatformBridgeLinuxImpl ...@@ -731,7 +728,9 @@ class NotificationPlatformBridgeLinuxImpl
if (data->profile_id == profile_id && data->is_incognito == incognito) if (data->profile_id == profile_id && data->is_incognito == incognito)
displayed->insert(data->notification_id); displayed->insert(data->notification_id);
} }
PostTaskToUiThread(base::BindOnce(callback, std::move(displayed), true)); content::BrowserThread::PostTask(
content::BrowserThread::UI, FROM_HERE,
base::BindOnce(callback, std::move(displayed), true));
} }
NotificationData* FindNotificationData(const std::string& notification_id, NotificationData* FindNotificationData(const std::string& notification_id,
...@@ -762,15 +761,18 @@ class NotificationPlatformBridgeLinuxImpl ...@@ -762,15 +761,18 @@ class NotificationPlatformBridgeLinuxImpl
return nullptr; return nullptr;
} }
void ForwardNotificationOperation(NotificationData* data, void ForwardNotificationOperation(const base::Location& location,
NotificationData* data,
NotificationCommon::Operation operation, NotificationCommon::Operation operation,
const base::Optional<int>& action_index, const base::Optional<int>& action_index,
const base::Optional<bool>& by_user) { const base::Optional<bool>& by_user) {
DCHECK(task_runner_->RunsTasksInCurrentSequence()); DCHECK(task_runner_->RunsTasksInCurrentSequence());
PostTaskToUiThread(base::BindOnce( content::BrowserThread::PostTask(
ForwardNotificationOperationOnUiThread, operation, content::BrowserThread::UI, location,
data->notification_type, data->origin_url, data->notification_id, base::BindOnce(ForwardNotificationOperationOnUiThread, operation,
action_index, by_user, data->profile_id, data->is_incognito)); data->notification_type, data->origin_url,
data->notification_id, action_index, by_user,
data->profile_id, data->is_incognito));
} }
void OnActionInvoked(dbus::Signal* signal) { void OnActionInvoked(dbus::Signal* signal) {
...@@ -788,13 +790,13 @@ class NotificationPlatformBridgeLinuxImpl ...@@ -788,13 +790,13 @@ class NotificationPlatformBridgeLinuxImpl
return; return;
if (action == kDefaultButtonId) { if (action == kDefaultButtonId) {
ForwardNotificationOperation(data, NotificationCommon::CLICK, ForwardNotificationOperation(FROM_HERE, data, NotificationCommon::CLICK,
base::nullopt /* action_index */, base::nullopt /* action_index */,
base::nullopt /* by_user */); base::nullopt /* by_user */);
} else if (action == kSettingsButtonId) { } else if (action == kSettingsButtonId) {
ForwardNotificationOperation(data, NotificationCommon::SETTINGS, ForwardNotificationOperation(
base::nullopt /* action_index */, FROM_HERE, data, NotificationCommon::SETTINGS,
base::nullopt /* by_user */); base::nullopt /* action_index */, base::nullopt /* by_user */);
} else if (action == kCloseButtonId) { } else if (action == kCloseButtonId) {
CloseOnTaskRunner(data->profile_id, data->notification_id); CloseOnTaskRunner(data->profile_id, data->notification_id);
} else { } else {
...@@ -805,7 +807,7 @@ class NotificationPlatformBridgeLinuxImpl ...@@ -805,7 +807,7 @@ class NotificationPlatformBridgeLinuxImpl
size_t id_zero_based = id - data->action_start; size_t id_zero_based = id - data->action_start;
if (id_zero_based >= n_buttons) if (id_zero_based >= n_buttons)
return; return;
ForwardNotificationOperation(data, NotificationCommon::CLICK, ForwardNotificationOperation(FROM_HERE, data, NotificationCommon::CLICK,
id_zero_based, base::nullopt /* by_user */); id_zero_based, base::nullopt /* by_user */);
} }
} }
...@@ -822,7 +824,7 @@ class NotificationPlatformBridgeLinuxImpl ...@@ -822,7 +824,7 @@ class NotificationPlatformBridgeLinuxImpl
return; return;
// TODO(peter): Can we support |by_user| appropriately here? // TODO(peter): Can we support |by_user| appropriately here?
ForwardNotificationOperation(data, NotificationCommon::CLOSE, ForwardNotificationOperation(FROM_HERE, data, NotificationCommon::CLOSE,
base::nullopt /* action_index */, base::nullopt /* action_index */,
true /* by_user */); true /* by_user */);
notifications_.erase(data); notifications_.erase(data);
...@@ -847,10 +849,12 @@ class NotificationPlatformBridgeLinuxImpl ...@@ -847,10 +849,12 @@ class NotificationPlatformBridgeLinuxImpl
"Notifications.Linux.BridgeInitializationStatus", "Notifications.Linux.BridgeInitializationStatus",
static_cast<int>(status), static_cast<int>(status),
static_cast<int>(ConnectionInitializationStatusCode::NUM_ITEMS)); static_cast<int>(ConnectionInitializationStatusCode::NUM_ITEMS));
PostTaskToUiThread(base::BindOnce( content::BrowserThread::PostTask(
&NotificationPlatformBridgeLinuxImpl:: content::BrowserThread::UI, FROM_HERE,
base::BindOnce(&NotificationPlatformBridgeLinuxImpl::
OnConnectionInitializationFinishedOnUiThread, OnConnectionInitializationFinishedOnUiThread,
this, status == ConnectionInitializationStatusCode::SUCCESS)); this,
status == ConnectionInitializationStatusCode::SUCCESS));
} }
void OnSignalConnected(const std::string& interface_name, void OnSignalConnected(const std::string& interface_name,
......
...@@ -18,7 +18,9 @@ ...@@ -18,7 +18,9 @@
#include "base/compiler_specific.h" #include "base/compiler_specific.h"
#include "base/feature_list.h" #include "base/feature_list.h"
#include "base/hash.h" #include "base/hash.h"
#include "base/location.h"
#include "base/logging.h" #include "base/logging.h"
#include "base/sequenced_task_runner.h"
#include "base/strings/string16.h" #include "base/strings/string16.h"
#include "base/strings/string_number_conversions.h" #include "base/strings/string_number_conversions.h"
#include "base/strings/string_split.h" #include "base/strings/string_split.h"
...@@ -707,7 +709,8 @@ void NotificationPlatformBridgeWin::Display( ...@@ -707,7 +709,8 @@ void NotificationPlatformBridgeWin::Display(
notification, /*include_body_image=*/true, /*include_small_image=*/true, notification, /*include_body_image=*/true, /*include_small_image=*/true,
/*include_icon_images=*/true); /*include_icon_images=*/true);
PostTaskToTaskRunnerThread( task_runner_->PostTask(
FROM_HERE,
base::BindOnce(&NotificationPlatformBridgeWinImpl::Display, impl_, base::BindOnce(&NotificationPlatformBridgeWinImpl::Display, impl_,
notification_type, profile_id, is_incognito, notification_type, profile_id, is_incognito,
std::move(notification_copy), std::move(metadata))); std::move(notification_copy), std::move(metadata)));
...@@ -716,16 +719,17 @@ void NotificationPlatformBridgeWin::Display( ...@@ -716,16 +719,17 @@ void NotificationPlatformBridgeWin::Display(
void NotificationPlatformBridgeWin::Close(const std::string& profile_id, void NotificationPlatformBridgeWin::Close(const std::string& profile_id,
const std::string& notification_id) { const std::string& notification_id) {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI); DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
PostTaskToTaskRunnerThread( task_runner_->PostTask(
base::BindOnce(&NotificationPlatformBridgeWinImpl::Close, impl_, FROM_HERE, base::BindOnce(&NotificationPlatformBridgeWinImpl::Close,
notification_id, profile_id)); impl_, notification_id, profile_id));
} }
void NotificationPlatformBridgeWin::GetDisplayed( void NotificationPlatformBridgeWin::GetDisplayed(
const std::string& profile_id, const std::string& profile_id,
bool incognito, bool incognito,
const GetDisplayedNotificationsCallback& callback) const { const GetDisplayedNotificationsCallback& callback) const {
PostTaskToTaskRunnerThread( task_runner_->PostTask(
FROM_HERE,
base::BindOnce(&NotificationPlatformBridgeWinImpl::GetDisplayed, impl_, base::BindOnce(&NotificationPlatformBridgeWinImpl::GetDisplayed, impl_,
profile_id, incognito, callback)); profile_id, incognito, callback));
} }
...@@ -733,7 +737,8 @@ void NotificationPlatformBridgeWin::GetDisplayed( ...@@ -733,7 +737,8 @@ void NotificationPlatformBridgeWin::GetDisplayed(
void NotificationPlatformBridgeWin::SetReadyCallback( void NotificationPlatformBridgeWin::SetReadyCallback(
NotificationBridgeReadyCallback callback) { NotificationBridgeReadyCallback callback) {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI); DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
PostTaskToTaskRunnerThread( task_runner_->PostTask(
FROM_HERE,
base::BindOnce(&NotificationPlatformBridgeWinImpl::SetReadyCallback, base::BindOnce(&NotificationPlatformBridgeWinImpl::SetReadyCallback,
impl_, std::move(callback))); impl_, std::move(callback)));
} }
...@@ -779,22 +784,18 @@ bool NotificationPlatformBridgeWin::NativeNotificationEnabled() { ...@@ -779,22 +784,18 @@ bool NotificationPlatformBridgeWin::NativeNotificationEnabled() {
base::FeatureList::IsEnabled(features::kNativeNotifications); base::FeatureList::IsEnabled(features::kNativeNotifications);
} }
void NotificationPlatformBridgeWin::PostTaskToTaskRunnerThread(
base::OnceClosure closure) const {
bool success = task_runner_->PostTask(FROM_HERE, std::move(closure));
DCHECK(success);
}
void NotificationPlatformBridgeWin::ForwardHandleEventForTesting( void NotificationPlatformBridgeWin::ForwardHandleEventForTesting(
NotificationCommon::Operation operation, NotificationCommon::Operation operation,
winui::Notifications::IToastNotification* notification, winui::Notifications::IToastNotification* notification,
winui::Notifications::IToastActivatedEventArgs* args, winui::Notifications::IToastActivatedEventArgs* args,
const base::Optional<bool>& by_user) { const base::Optional<bool>& by_user) {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI); DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
PostTaskToTaskRunnerThread(base::BindOnce( task_runner_->PostTask(
&NotificationPlatformBridgeWinImpl::ForwardHandleEventForTesting, impl_, FROM_HERE,
operation, base::Unretained(notification), base::Unretained(args), base::BindOnce(
by_user)); &NotificationPlatformBridgeWinImpl::ForwardHandleEventForTesting,
impl_, operation, base::Unretained(notification),
base::Unretained(args), by_user));
} }
void NotificationPlatformBridgeWin::SetDisplayedNotificationsForTesting( void NotificationPlatformBridgeWin::SetDisplayedNotificationsForTesting(
......
...@@ -6,16 +6,16 @@ ...@@ -6,16 +6,16 @@
#define CHROME_BROWSER_NOTIFICATIONS_NOTIFICATION_PLATFORM_BRIDGE_WIN_H_ #define CHROME_BROWSER_NOTIFICATIONS_NOTIFICATION_PLATFORM_BRIDGE_WIN_H_
#include <windows.ui.notifications.h> #include <windows.ui.notifications.h>
#include <string> #include <string>
#include "base/compiler_specific.h"
#include "base/macros.h" #include "base/macros.h"
#include "base/optional.h" #include "base/optional.h"
#include "base/sequenced_task_runner.h"
#include "chrome/browser/notifications/notification_platform_bridge.h" #include "chrome/browser/notifications/notification_platform_bridge.h"
namespace base { namespace base {
class CommandLine; class CommandLine;
class SequencedTaskRunner;
} }
class NotificationPlatformBridgeWinImpl; class NotificationPlatformBridgeWinImpl;
...@@ -62,8 +62,6 @@ class NotificationPlatformBridgeWin : public NotificationPlatformBridge { ...@@ -62,8 +62,6 @@ class NotificationPlatformBridgeWin : public NotificationPlatformBridge {
FRIEND_TEST_ALL_PREFIXES(NotificationPlatformBridgeWinUITest, HandleEvent); FRIEND_TEST_ALL_PREFIXES(NotificationPlatformBridgeWinUITest, HandleEvent);
FRIEND_TEST_ALL_PREFIXES(NotificationPlatformBridgeWinUITest, HandleSettings); FRIEND_TEST_ALL_PREFIXES(NotificationPlatformBridgeWinUITest, HandleSettings);
void PostTaskToTaskRunnerThread(base::OnceClosure closure) const;
// Simulates a click/dismiss event. Only for use in testing. // Simulates a click/dismiss event. Only for use in testing.
// Note: Ownership of |notification| and |args| is retained by the caller. // Note: Ownership of |notification| and |args| is retained by the caller.
void ForwardHandleEventForTesting( void ForwardHandleEventForTesting(
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment