🔧 Allow notifications debugging (Windows)
This commit is contained in:
parent
76d9756fb9
commit
8a8aaaf16c
2 changed files with 32 additions and 1 deletions
|
@ -13,6 +13,7 @@
|
||||||
#include "base/md5.h"
|
#include "base/md5.h"
|
||||||
#include "base/strings/utf_string_conversions.h"
|
#include "base/strings/utf_string_conversions.h"
|
||||||
#include "base/time/time.h"
|
#include "base/time/time.h"
|
||||||
|
#include "base/environment.h"
|
||||||
#include "base/win/windows_version.h"
|
#include "base/win/windows_version.h"
|
||||||
#include "brightray/browser/win/notification_presenter_win7.h"
|
#include "brightray/browser/win/notification_presenter_win7.h"
|
||||||
#include "brightray/browser/win/windows_toast_notification.h"
|
#include "brightray/browser/win/windows_toast_notification.h"
|
||||||
|
@ -26,6 +27,10 @@ namespace brightray {
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
|
bool IsDebuggingNotifications() {
|
||||||
|
return base::Environment::Create()->HasVar("ELECTRON_DEBUG_NOTIFICATIONS");
|
||||||
|
}
|
||||||
|
|
||||||
bool SaveIconToPath(const SkBitmap& bitmap, const base::FilePath& path) {
|
bool SaveIconToPath(const SkBitmap& bitmap, const base::FilePath& path) {
|
||||||
std::vector<unsigned char> png_data;
|
std::vector<unsigned char> png_data;
|
||||||
if (!gfx::PNGCodec::EncodeBGRASkBitmap(bitmap, false, &png_data))
|
if (!gfx::PNGCodec::EncodeBGRASkBitmap(bitmap, false, &png_data))
|
||||||
|
@ -49,6 +54,11 @@ NotificationPresenter* NotificationPresenter::Create() {
|
||||||
new NotificationPresenterWin);
|
new NotificationPresenterWin);
|
||||||
if (!presenter->Init())
|
if (!presenter->Init())
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
||||||
|
if (IsDebuggingNotifications()) {
|
||||||
|
LOG(INFO) << "Successfully created Windows notifications presenter";
|
||||||
|
}
|
||||||
|
|
||||||
return presenter.release();
|
return presenter.release();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
#include <shlobj.h>
|
#include <shlobj.h>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
#include "base/environment.h"
|
||||||
#include "base/strings/utf_string_conversions.h"
|
#include "base/strings/utf_string_conversions.h"
|
||||||
#include "brightray/browser/notification_delegate.h"
|
#include "brightray/browser/notification_delegate.h"
|
||||||
#include "brightray/browser/win/notification_presenter_win.h"
|
#include "brightray/browser/win/notification_presenter_win.h"
|
||||||
|
@ -26,6 +27,7 @@ using ABI::Windows::Data::Xml::Dom::IXmlNode;
|
||||||
using ABI::Windows::Data::Xml::Dom::IXmlNodeList;
|
using ABI::Windows::Data::Xml::Dom::IXmlNodeList;
|
||||||
using ABI::Windows::Data::Xml::Dom::IXmlText;
|
using ABI::Windows::Data::Xml::Dom::IXmlText;
|
||||||
|
|
||||||
|
|
||||||
namespace brightray {
|
namespace brightray {
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
@ -41,6 +43,10 @@ bool GetAppUserModelId(ScopedHString* app_id) {
|
||||||
return app_id->success();
|
return app_id->success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool IsDebuggingNotifications() {
|
||||||
|
return base::Environment::Create()->HasVar("ELECTRON_DEBUG_NOTIFICATIONS");
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
// static
|
// static
|
||||||
|
@ -90,7 +96,7 @@ void WindowsToastNotification::Show(const NotificationOptions& options) {
|
||||||
std::wstring icon_path = presenter_win->SaveIconToFilesystem(
|
std::wstring icon_path = presenter_win->SaveIconToFilesystem(
|
||||||
options.icon,
|
options.icon,
|
||||||
options.icon_url);
|
options.icon_url);
|
||||||
|
|
||||||
ComPtr<IXmlDocument> toast_xml;
|
ComPtr<IXmlDocument> toast_xml;
|
||||||
if (FAILED(GetToastXml(toast_manager_.Get(), options.title, options.msg,
|
if (FAILED(GetToastXml(toast_manager_.Get(), options.title, options.msg,
|
||||||
icon_path, options.silent, &toast_xml))) {
|
icon_path, options.silent, &toast_xml))) {
|
||||||
|
@ -129,11 +135,14 @@ void WindowsToastNotification::Show(const NotificationOptions& options) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (IsDebuggingNotifications()) LOG(INFO) << "Notification created";
|
||||||
|
|
||||||
if (delegate())
|
if (delegate())
|
||||||
delegate()->NotificationDisplayed();
|
delegate()->NotificationDisplayed();
|
||||||
}
|
}
|
||||||
|
|
||||||
void WindowsToastNotification::Dismiss() {
|
void WindowsToastNotification::Dismiss() {
|
||||||
|
if (IsDebuggingNotifications()) LOG(INFO) << "Hiding notification";
|
||||||
toast_notifier_->Hide(toast_notification_.Get());
|
toast_notifier_->Hide(toast_notification_.Get());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -165,14 +174,20 @@ bool WindowsToastNotification::GetToastXml(
|
||||||
: ABI::Windows::UI::Notifications::
|
: ABI::Windows::UI::Notifications::
|
||||||
ToastTemplateType_ToastImageAndText02;
|
ToastTemplateType_ToastImageAndText02;
|
||||||
if (FAILED(toastManager->GetTemplateContent(template_type, toast_xml)))
|
if (FAILED(toastManager->GetTemplateContent(template_type, toast_xml)))
|
||||||
|
if (IsDebuggingNotifications()) LOG(INFO) << "Fetching XML template failed";
|
||||||
return false;
|
return false;
|
||||||
if (!SetXmlText(*toast_xml, title, msg))
|
if (!SetXmlText(*toast_xml, title, msg))
|
||||||
|
if (IsDebuggingNotifications()) LOG(INFO) << "Setting text fields on template failed";
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Configure the toast's notification sound
|
// Configure the toast's notification sound
|
||||||
if (silent) {
|
if (silent) {
|
||||||
if (FAILED(SetXmlAudioSilent(*toast_xml)))
|
if (FAILED(SetXmlAudioSilent(*toast_xml)))
|
||||||
|
if (IsDebuggingNotifications()) {
|
||||||
|
LOG(INFO) << "Setting \"silent\" option on notification failed";
|
||||||
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -398,6 +413,8 @@ IFACEMETHODIMP ToastEventHandler::Invoke(
|
||||||
content::BrowserThread::PostTask(
|
content::BrowserThread::PostTask(
|
||||||
content::BrowserThread::UI, FROM_HERE,
|
content::BrowserThread::UI, FROM_HERE,
|
||||||
base::Bind(&Notification::NotificationClicked, notification_));
|
base::Bind(&Notification::NotificationClicked, notification_));
|
||||||
|
if (IsDebuggingNotifications()) LOG(INFO) << "Notification clicked";
|
||||||
|
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -407,6 +424,8 @@ IFACEMETHODIMP ToastEventHandler::Invoke(
|
||||||
content::BrowserThread::PostTask(
|
content::BrowserThread::PostTask(
|
||||||
content::BrowserThread::UI, FROM_HERE,
|
content::BrowserThread::UI, FROM_HERE,
|
||||||
base::Bind(&Notification::NotificationDismissed, notification_));
|
base::Bind(&Notification::NotificationDismissed, notification_));
|
||||||
|
if (IsDebuggingNotifications()) LOG(INFO) << "Notification dismissed";
|
||||||
|
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -416,6 +435,8 @@ IFACEMETHODIMP ToastEventHandler::Invoke(
|
||||||
content::BrowserThread::PostTask(
|
content::BrowserThread::PostTask(
|
||||||
content::BrowserThread::UI, FROM_HERE,
|
content::BrowserThread::UI, FROM_HERE,
|
||||||
base::Bind(&Notification::NotificationFailed, notification_));
|
base::Bind(&Notification::NotificationFailed, notification_));
|
||||||
|
if (IsDebuggingNotifications()) LOG(INFO) << "Notification failed";
|
||||||
|
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue