1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "chrome/browser/notifications/notification_object_proxy.h" 6 7 #include "base/guid.h" 8 #include "base/strings/stringprintf.h" 9 #include "content/public/browser/desktop_notification_delegate.h" 10 #include "content/public/browser/render_frame_host.h" 11 #include "content/public/browser/render_process_host.h" 12 #include "content/public/browser/web_contents.h" 13 NotificationObjectProxy(content::RenderFrameHost * render_frame_host,scoped_ptr<content::DesktopNotificationDelegate> delegate)14NotificationObjectProxy::NotificationObjectProxy( 15 content::RenderFrameHost* render_frame_host, 16 scoped_ptr<content::DesktopNotificationDelegate> delegate) 17 : render_process_id_(render_frame_host->GetProcess()->GetID()), 18 render_frame_id_(render_frame_host->GetRoutingID()), 19 delegate_(delegate.Pass()), 20 displayed_(false), 21 id_(base::GenerateGUID()) { 22 } 23 ~NotificationObjectProxy()24NotificationObjectProxy::~NotificationObjectProxy() {} 25 Display()26void NotificationObjectProxy::Display() { 27 // This method is called each time the notification is shown to the user 28 // but we only want to fire the event the first time. 29 if (displayed_) 30 return; 31 displayed_ = true; 32 33 delegate_->NotificationDisplayed(); 34 } 35 Error()36void NotificationObjectProxy::Error() { 37 delegate_->NotificationError(); 38 } 39 Close(bool by_user)40void NotificationObjectProxy::Close(bool by_user) { 41 delegate_->NotificationClosed(by_user); 42 } 43 Click()44void NotificationObjectProxy::Click() { 45 delegate_->NotificationClick(); 46 } 47 id() const48std::string NotificationObjectProxy::id() const { 49 return id_; 50 } 51 GetWebContents() const52content::WebContents* NotificationObjectProxy::GetWebContents() const { 53 return content::WebContents::FromRenderFrameHost( 54 content::RenderFrameHost::FromID(render_process_id_, render_frame_id_)); 55 } 56