diff options
Diffstat (limited to 'chrome/browser/notifications/notification_object_proxy.h')
-rw-r--r-- | chrome/browser/notifications/notification_object_proxy.h | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/chrome/browser/notifications/notification_object_proxy.h b/chrome/browser/notifications/notification_object_proxy.h new file mode 100644 index 0000000..168bd8a --- /dev/null +++ b/chrome/browser/notifications/notification_object_proxy.h @@ -0,0 +1,51 @@ +// Copyright (c) 2009 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_NOTIFICATIONS_NOTIFICATION_OBJECT_PROXY_H_ +#define CHROME_BROWSER_NOTIFICATIONS_NOTIFICATION_OBJECT_PROXY_H_ + +#include "base/ref_counted.h" + +class MessageLoop; +namespace IPC { +class Message; +} + +// A NotificationObjectProxy stands in for the JavaScript Notification object +// which corresponds to a notification toast on the desktop. It can be signaled +// when various events occur regarding the desktop notification, and the +// attached JS listeners will be invoked in the renderer or worker process. +class NotificationObjectProxy : + public base::RefCountedThreadSafe<NotificationObjectProxy> { + public: + // Creates a Proxy object with the necessary callback information. + NotificationObjectProxy(int process_id, int route_id, + int notification_id, bool worker); + + // To be called when the desktop notification is actually shown. + void Display(); + + // To be called when the desktop notification cannot be shown due to an + // error. + void Error(); + + // To be called when the desktop notification is closed. If closed by a + // user explicitly (as opposed to timeout), |by_user| should be true. + void Close(bool by_user); + + private: + // Called on UI thread to schedule a message for sending. + void DeliverMessage(IPC::Message* message); + + // Called via Task on IO thread to actually send a message to a notification. + void Send(IPC::Message* message); + + // Callback information to find the JS Notification object where it lives. + int process_id_; + int route_id_; + int notification_id_; + bool worker_; +}; + +#endif // CHROME_BROWSER_NOTIFICATIONS_NOTIFICATION_OBJECT_PROXY_H_ |