summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjohnnyg@chromium.org <johnnyg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-07-15 21:35:17 +0000
committerjohnnyg@chromium.org <johnnyg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-07-15 21:35:17 +0000
commitb2e7760097553ce72b13180dffbf4890bae02d07 (patch)
tree6f4ba8a5423d90a6535a016e28ff5b65b596c412
parenta317d315b96075149e4de5ba9f274b4d95799bd5 (diff)
downloadchromium_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
-rw-r--r--chrome/browser/cocoa/notifications/balloon_controller.h3
-rw-r--r--chrome/browser/cocoa/notifications/balloon_controller.mm8
-rw-r--r--chrome/browser/cocoa/notifications/balloon_view_bridge.h2
-rw-r--r--chrome/browser/cocoa/notifications/balloon_view_bridge.mm4
-rw-r--r--chrome/browser/gtk/notifications/balloon_view_gtk.cc8
-rw-r--r--chrome/browser/gtk/notifications/balloon_view_gtk.h2
-rw-r--r--chrome/browser/views/notifications/balloon_view.cc7
-rw-r--r--chrome/browser/views/notifications/balloon_view.h2
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;