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
gfx::Image(*ui::ResourceBundle::GetSharedInstance().GetImageSkiaNamed(
IDR_PRODUCT_LOGO_256))
.As1xPNGBytes();
PostTaskToTaskRunnerThread(base::BindOnce(
&NotificationPlatformBridgeLinuxImpl::InitOnTaskRunner, this));
task_runner_->PostTask(
FROM_HERE,
base::BindOnce(&NotificationPlatformBridgeLinuxImpl::InitOnTaskRunner,
this));
}
void Display(
......@@ -285,16 +287,19 @@ class NotificationPlatformBridgeLinuxImpl
notification, body_images_supported_.value(),
/*include_small_image=*/false, /*include_icon_images=*/false);
PostTaskToTaskRunnerThread(base::BindOnce(
&NotificationPlatformBridgeLinuxImpl::DisplayOnTaskRunner, this,
notification_type, profile_id, is_incognito,
std::move(notification_copy)));
task_runner_->PostTask(
FROM_HERE,
base::BindOnce(
&NotificationPlatformBridgeLinuxImpl::DisplayOnTaskRunner, this,
notification_type, profile_id, is_incognito,
std::move(notification_copy)));
}
void Close(const std::string& profile_id,
const std::string& notification_id) override {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
PostTaskToTaskRunnerThread(
task_runner_->PostTask(
FROM_HERE,
base::BindOnce(&NotificationPlatformBridgeLinuxImpl::CloseOnTaskRunner,
this, profile_id, notification_id));
}
......@@ -304,9 +309,11 @@ class NotificationPlatformBridgeLinuxImpl
bool incognito,
const GetDisplayedNotificationsCallback& callback) const override {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
PostTaskToTaskRunnerThread(base::BindOnce(
&NotificationPlatformBridgeLinuxImpl::GetDisplayedOnTaskRunner, this,
profile_id, incognito, callback));
task_runner_->PostTask(
FROM_HERE,
base::BindOnce(
&NotificationPlatformBridgeLinuxImpl::GetDisplayedOnTaskRunner,
this, profile_id, incognito, callback));
}
void SetReadyCallback(NotificationBridgeReadyCallback callback) override {
......@@ -320,8 +327,10 @@ class NotificationPlatformBridgeLinuxImpl
void CleanUp() {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
PostTaskToTaskRunnerThread(base::BindOnce(
&NotificationPlatformBridgeLinuxImpl::CleanUpOnTaskRunner, this));
task_runner_->PostTask(
FROM_HERE,
base::BindOnce(
&NotificationPlatformBridgeLinuxImpl::CleanUpOnTaskRunner, this));
}
private:
......@@ -385,20 +394,6 @@ class NotificationPlatformBridgeLinuxImpl
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.
void InitOnTaskRunner() {
DCHECK(task_runner_->RunsTasksInCurrentSequence());
......@@ -440,9 +435,11 @@ class NotificationPlatformBridgeLinuxImpl
ConnectionInitializationStatusCode::MISSING_REQUIRED_CAPABILITIES);
return;
}
PostTaskToUiThread(base::BindOnce(
&NotificationPlatformBridgeLinuxImpl::SetBodyImagesSupported, this,
base::ContainsKey(capabilities_, kCapabilityBodyImages)));
content::BrowserThread::PostTask(
content::BrowserThread::UI, FROM_HERE,
base::BindOnce(
&NotificationPlatformBridgeLinuxImpl::SetBodyImagesSupported, this,
base::ContainsKey(capabilities_, kCapabilityBodyImages)));
dbus::MethodCall get_server_information_call(kFreedesktopNotificationsName,
"GetServerInformation");
......@@ -731,7 +728,9 @@ class NotificationPlatformBridgeLinuxImpl
if (data->profile_id == profile_id && data->is_incognito == incognito)
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,
......@@ -762,15 +761,18 @@ class NotificationPlatformBridgeLinuxImpl
return nullptr;
}
void ForwardNotificationOperation(NotificationData* data,
void ForwardNotificationOperation(const base::Location& location,
NotificationData* data,
NotificationCommon::Operation operation,
const base::Optional<int>& action_index,
const base::Optional<bool>& by_user) {
DCHECK(task_runner_->RunsTasksInCurrentSequence());
PostTaskToUiThread(base::BindOnce(
ForwardNotificationOperationOnUiThread, operation,
data->notification_type, data->origin_url, data->notification_id,
action_index, by_user, data->profile_id, data->is_incognito));
content::BrowserThread::PostTask(
content::BrowserThread::UI, location,
base::BindOnce(ForwardNotificationOperationOnUiThread, operation,
data->notification_type, data->origin_url,
data->notification_id, action_index, by_user,
data->profile_id, data->is_incognito));
}
void OnActionInvoked(dbus::Signal* signal) {
......@@ -788,13 +790,13 @@ class NotificationPlatformBridgeLinuxImpl
return;
if (action == kDefaultButtonId) {
ForwardNotificationOperation(data, NotificationCommon::CLICK,
ForwardNotificationOperation(FROM_HERE, data, NotificationCommon::CLICK,
base::nullopt /* action_index */,
base::nullopt /* by_user */);
} else if (action == kSettingsButtonId) {
ForwardNotificationOperation(data, NotificationCommon::SETTINGS,
base::nullopt /* action_index */,
base::nullopt /* by_user */);
ForwardNotificationOperation(
FROM_HERE, data, NotificationCommon::SETTINGS,
base::nullopt /* action_index */, base::nullopt /* by_user */);
} else if (action == kCloseButtonId) {
CloseOnTaskRunner(data->profile_id, data->notification_id);
} else {
......@@ -805,7 +807,7 @@ class NotificationPlatformBridgeLinuxImpl
size_t id_zero_based = id - data->action_start;
if (id_zero_based >= n_buttons)
return;
ForwardNotificationOperation(data, NotificationCommon::CLICK,
ForwardNotificationOperation(FROM_HERE, data, NotificationCommon::CLICK,
id_zero_based, base::nullopt /* by_user */);
}
}
......@@ -822,7 +824,7 @@ class NotificationPlatformBridgeLinuxImpl
return;
// TODO(peter): Can we support |by_user| appropriately here?
ForwardNotificationOperation(data, NotificationCommon::CLOSE,
ForwardNotificationOperation(FROM_HERE, data, NotificationCommon::CLOSE,
base::nullopt /* action_index */,
true /* by_user */);
notifications_.erase(data);
......@@ -847,10 +849,12 @@ class NotificationPlatformBridgeLinuxImpl
"Notifications.Linux.BridgeInitializationStatus",
static_cast<int>(status),
static_cast<int>(ConnectionInitializationStatusCode::NUM_ITEMS));
PostTaskToUiThread(base::BindOnce(
&NotificationPlatformBridgeLinuxImpl::
OnConnectionInitializationFinishedOnUiThread,
this, status == ConnectionInitializationStatusCode::SUCCESS));
content::BrowserThread::PostTask(
content::BrowserThread::UI, FROM_HERE,
base::BindOnce(&NotificationPlatformBridgeLinuxImpl::
OnConnectionInitializationFinishedOnUiThread,
this,
status == ConnectionInitializationStatusCode::SUCCESS));
}
void OnSignalConnected(const std::string& interface_name,
......
......@@ -18,7 +18,9 @@
#include "base/compiler_specific.h"
#include "base/feature_list.h"
#include "base/hash.h"
#include "base/location.h"
#include "base/logging.h"
#include "base/sequenced_task_runner.h"
#include "base/strings/string16.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/string_split.h"
......@@ -707,7 +709,8 @@ void NotificationPlatformBridgeWin::Display(
notification, /*include_body_image=*/true, /*include_small_image=*/true,
/*include_icon_images=*/true);
PostTaskToTaskRunnerThread(
task_runner_->PostTask(
FROM_HERE,
base::BindOnce(&NotificationPlatformBridgeWinImpl::Display, impl_,
notification_type, profile_id, is_incognito,
std::move(notification_copy), std::move(metadata)));
......@@ -716,16 +719,17 @@ void NotificationPlatformBridgeWin::Display(
void NotificationPlatformBridgeWin::Close(const std::string& profile_id,
const std::string& notification_id) {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
PostTaskToTaskRunnerThread(
base::BindOnce(&NotificationPlatformBridgeWinImpl::Close, impl_,
notification_id, profile_id));
task_runner_->PostTask(
FROM_HERE, base::BindOnce(&NotificationPlatformBridgeWinImpl::Close,
impl_, notification_id, profile_id));
}
void NotificationPlatformBridgeWin::GetDisplayed(
const std::string& profile_id,
bool incognito,
const GetDisplayedNotificationsCallback& callback) const {
PostTaskToTaskRunnerThread(
task_runner_->PostTask(
FROM_HERE,
base::BindOnce(&NotificationPlatformBridgeWinImpl::GetDisplayed, impl_,
profile_id, incognito, callback));
}
......@@ -733,7 +737,8 @@ void NotificationPlatformBridgeWin::GetDisplayed(
void NotificationPlatformBridgeWin::SetReadyCallback(
NotificationBridgeReadyCallback callback) {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
PostTaskToTaskRunnerThread(
task_runner_->PostTask(
FROM_HERE,
base::BindOnce(&NotificationPlatformBridgeWinImpl::SetReadyCallback,
impl_, std::move(callback)));
}
......@@ -779,22 +784,18 @@ bool NotificationPlatformBridgeWin::NativeNotificationEnabled() {
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(
NotificationCommon::Operation operation,
winui::Notifications::IToastNotification* notification,
winui::Notifications::IToastActivatedEventArgs* args,
const base::Optional<bool>& by_user) {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
PostTaskToTaskRunnerThread(base::BindOnce(
&NotificationPlatformBridgeWinImpl::ForwardHandleEventForTesting, impl_,
operation, base::Unretained(notification), base::Unretained(args),
by_user));
task_runner_->PostTask(
FROM_HERE,
base::BindOnce(
&NotificationPlatformBridgeWinImpl::ForwardHandleEventForTesting,
impl_, operation, base::Unretained(notification),
base::Unretained(args), by_user));
}
void NotificationPlatformBridgeWin::SetDisplayedNotificationsForTesting(
......
......@@ -6,16 +6,16 @@
#define CHROME_BROWSER_NOTIFICATIONS_NOTIFICATION_PLATFORM_BRIDGE_WIN_H_
#include <windows.ui.notifications.h>
#include <string>
#include "base/compiler_specific.h"
#include "base/macros.h"
#include "base/optional.h"
#include "base/sequenced_task_runner.h"
#include "chrome/browser/notifications/notification_platform_bridge.h"
namespace base {
class CommandLine;
class SequencedTaskRunner;
}
class NotificationPlatformBridgeWinImpl;
......@@ -62,8 +62,6 @@ class NotificationPlatformBridgeWin : public NotificationPlatformBridge {
FRIEND_TEST_ALL_PREFIXES(NotificationPlatformBridgeWinUITest, HandleEvent);
FRIEND_TEST_ALL_PREFIXES(NotificationPlatformBridgeWinUITest, HandleSettings);
void PostTaskToTaskRunnerThread(base::OnceClosure closure) const;
// Simulates a click/dismiss event. Only for use in testing.
// Note: Ownership of |notification| and |args| is retained by the caller.
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