diff options
author | johnnyg@chromium.org <johnnyg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-07-15 21:35:17 +0000 |
---|---|---|
committer | johnnyg@chromium.org <johnnyg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-07-15 21:35:17 +0000 |
commit | b2e7760097553ce72b13180dffbf4890bae02d07 (patch) | |
tree | 6f4ba8a5423d90a6535a016e28ff5b65b596c412 | |
parent | a317d315b96075149e4de5ba9f274b4d95799bd5 (diff) | |
download | chromium_src-b2e7760097553ce72b13180dffbf4890bae02d07.zip chromium_src-b2e7760097553ce72b13180dffbf4890bae02d07.tar.gz chromium_src-b2e7760097553ce72b13180dffbf4890bae02d07.tar.bz2 |
Implement BalloonView::Update on all platforms to navigate a notification balloon to the new content url; this is the last piece for replace-id support in notifications.
BUG=none
TEST=use replaceId feature for notifications
Review URL: http://codereview.chromium.org/2955009
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@52540 0039d316-1c4b-4281-b951-d872f2087c98
8 files changed, 32 insertions, 4 deletions
diff --git a/chrome/browser/cocoa/notifications/balloon_controller.h b/chrome/browser/cocoa/notifications/balloon_controller.h index bacf3af..8257bc1 100644 --- a/chrome/browser/cocoa/notifications/balloon_controller.h +++ b/chrome/browser/cocoa/notifications/balloon_controller.h @@ -60,6 +60,9 @@ // button handler. - (void)closeBalloon:(bool)byUser; +// Update the contents of the balloon to match the notification. +- (void)updateContents; + // Repositions the view to match the position and size of the balloon. // Called by the bridge when the size changes. - (void)repositionToBalloon; diff --git a/chrome/browser/cocoa/notifications/balloon_controller.mm b/chrome/browser/cocoa/notifications/balloon_controller.mm index f50adac..bad636a 100644 --- a/chrome/browser/cocoa/notifications/balloon_controller.mm +++ b/chrome/browser/cocoa/notifications/balloon_controller.mm @@ -13,6 +13,7 @@ #include "chrome/browser/notifications/balloon.h" #include "chrome/browser/notifications/desktop_notification_service.h" #include "chrome/browser/profile.h" +#include "chrome/browser/renderer_host/render_view_host.h" #include "grit/generated_resources.h" #include "grit/theme_resources.h" @@ -92,6 +93,13 @@ const int kRightMargin = 1; balloon_ = NULL; } +- (void)updateContents { + DCHECK(htmlContents_.get()) << "BalloonView::Update called before Show"; + if (htmlContents_->render_view_host()) + htmlContents_->render_view_host()->NavigateToURL( + balloon_->notification().content_url()); +} + - (void)repositionToBalloon { DCHECK(balloon_); int x = balloon_->GetPosition().x(); diff --git a/chrome/browser/cocoa/notifications/balloon_view_bridge.h b/chrome/browser/cocoa/notifications/balloon_view_bridge.h index fee9312..e967608 100644 --- a/chrome/browser/cocoa/notifications/balloon_view_bridge.h +++ b/chrome/browser/cocoa/notifications/balloon_view_bridge.h @@ -19,7 +19,7 @@ class BalloonViewBridge : public BalloonView { // BalloonView interface. virtual void Show(Balloon* balloon); - virtual void Update() {} + virtual void Update(); virtual void RepositionToBalloon(); virtual void Close(bool by_user); virtual gfx::Size GetSize() const; diff --git a/chrome/browser/cocoa/notifications/balloon_view_bridge.mm b/chrome/browser/cocoa/notifications/balloon_view_bridge.mm index 121846e..a1be94b 100644 --- a/chrome/browser/cocoa/notifications/balloon_view_bridge.mm +++ b/chrome/browser/cocoa/notifications/balloon_view_bridge.mm @@ -38,3 +38,7 @@ void BalloonViewBridge::Show(Balloon* balloon) { BalloonHost* BalloonViewBridge::GetHost() const { return [controller_ getHost]; } + +void BalloonViewBridge::Update() { + [controller_ updateContents]; +} diff --git a/chrome/browser/gtk/notifications/balloon_view_gtk.cc b/chrome/browser/gtk/notifications/balloon_view_gtk.cc index 754684f..038d335 100644 --- a/chrome/browser/gtk/notifications/balloon_view_gtk.cc +++ b/chrome/browser/gtk/notifications/balloon_view_gtk.cc @@ -318,13 +318,19 @@ void BalloonViewImpl::Show(Balloon* balloon) { int pos_y = gdk_screen_height(); gtk_window_move(GTK_WINDOW(frame_container_), pos_x, pos_y); balloon_->SetPosition(gfx::Point(pos_x, pos_y), false); - gtk_widget_show_all(frame_container_); notification_registrar_.Add(this, NotificationType::NOTIFY_BALLOON_DISCONNECTED, Source<Balloon>(balloon)); } +void BalloonViewImpl::Update() { + DCHECK(html_contents_.get()) << "BalloonView::Update called before Show"; + if (html_contents_->render_view_host()) + html_contents_->render_view_host()->NavigateToURL( + balloon_->notification().content_url()); +} + gfx::Point BalloonViewImpl::GetContentsOffset() const { return gfx::Point(kLeftShadowWidth + kLeftMargin, GetShelfHeight() + kTopShadowWidth + kTopMargin); diff --git a/chrome/browser/gtk/notifications/balloon_view_gtk.h b/chrome/browser/gtk/notifications/balloon_view_gtk.h index e9ce405..d80bda6 100644 --- a/chrome/browser/gtk/notifications/balloon_view_gtk.h +++ b/chrome/browser/gtk/notifications/balloon_view_gtk.h @@ -41,7 +41,7 @@ class BalloonViewImpl : public BalloonView, // BalloonView interface. virtual void Show(Balloon* balloon); - virtual void Update() {} + virtual void Update(); virtual void RepositionToBalloon(); virtual void Close(bool by_user); virtual gfx::Size GetSize() const; diff --git a/chrome/browser/views/notifications/balloon_view.cc b/chrome/browser/views/notifications/balloon_view.cc index ec9aa95..c89280b 100644 --- a/chrome/browser/views/notifications/balloon_view.cc +++ b/chrome/browser/views/notifications/balloon_view.cc @@ -205,6 +205,13 @@ void BalloonViewImpl::RepositionToBalloon() { animation_->Show(); } +void BalloonViewImpl::Update() { + DCHECK(html_contents_.get()) << "BalloonView::Update called before Show"; + if (html_contents_->render_view_host()) + html_contents_->render_view_host()->NavigateToURL( + balloon_->notification().content_url()); +} + void BalloonViewImpl::AnimationProgressed(const Animation* animation) { DCHECK(animation == animation_.get()); diff --git a/chrome/browser/views/notifications/balloon_view.h b/chrome/browser/views/notifications/balloon_view.h index d1b0636..6f10bd2 100644 --- a/chrome/browser/views/notifications/balloon_view.h +++ b/chrome/browser/views/notifications/balloon_view.h @@ -56,7 +56,7 @@ class BalloonViewImpl : public BalloonView, // BalloonView interface. virtual void Show(Balloon* balloon); - virtual void Update() {} + virtual void Update(); virtual void RepositionToBalloon(); virtual void Close(bool by_user); virtual gfx::Size GetSize() const; |