diff options
author | Jean-François Rameau <jframeau@cvs.gnome.org> | 2006-02-09 06:20:02 +0800 |
---|---|---|
committer | Jean-François Rameau <jframeau@src.gnome.org> | 2006-02-09 06:20:02 +0800 |
commit | 05c6fc746dbf135d87b214d0f741bf533eb16b5b (patch) | |
tree | 6f608f9ab13520b0a4ced07a6ac2917b9258a448 | |
parent | 9ceb5eafd29a927d9333bec2fda3ea5e21f0ec72 (diff) | |
download | gsoc2013-epiphany-05c6fc746dbf135d87b214d0f741bf533eb16b5b.tar.gz gsoc2013-epiphany-05c6fc746dbf135d87b214d0f741bf533eb16b5b.tar.zst gsoc2013-epiphany-05c6fc746dbf135d87b214d0f741bf533eb16b5b.zip |
Block popup with NULL url (javascript:window.open() for instance). but
2006-02-08 Jean-François Rameau <jframeau@cvs.gnome.org>
* embed/mozilla/EphyBrowser.cpp: (HandleEvent):
* src/ephy-tab.c: (popups_manager_add),(popups_manager_show):
Block popup with NULL url (javascript:window.open() for instance).
but don't show them when unblocking.
Bug #155009.
-rw-r--r-- | ChangeLog | 9 | ||||
-rw-r--r-- | embed/mozilla/EphyBrowser.cpp | 15 | ||||
-rw-r--r-- | src/ephy-tab.c | 17 |
3 files changed, 28 insertions, 13 deletions
@@ -1,3 +1,12 @@ +2006-02-08 Jean-François Rameau <jframeau@cvs.gnome.org> + + * embed/mozilla/EphyBrowser.cpp: (HandleEvent): + * src/ephy-tab.c: (popups_manager_add),(popups_manager_show): + + Block popup with NULL url (javascript:window.open() for instance). + but don't show them when unblocking. + Bug #155009. + 2006-02-08 Christian Persch <chpe@cvs.gnome.org> * m4/gecko.m4: diff --git a/embed/mozilla/EphyBrowser.cpp b/embed/mozilla/EphyBrowser.cpp index b097ec33a..6a97f026a 100644 --- a/embed/mozilla/EphyBrowser.cpp +++ b/embed/mozilla/EphyBrowser.cpp @@ -358,12 +358,15 @@ EphyPopupBlockEventListener::HandleEvent (nsIDOMEvent * aDOMEvent) nsCOMPtr<nsIURI> popupWindowURI; popupEvent->GetPopupWindowURI (getter_AddRefs (popupWindowURI)); - NS_ENSURE_TRUE (popupWindowURI, NS_ERROR_FAILURE); - - nsresult rv; + nsEmbedCString popupWindowURIString; - rv = popupWindowURI->GetSpec (popupWindowURIString); - NS_ENSURE_SUCCESS (rv, NS_ERROR_FAILURE); + nsresult rv; + + if (popupWindowURI) + { + rv = popupWindowURI->GetSpec (popupWindowURIString); + NS_ENSURE_SUCCESS (rv, NS_ERROR_FAILURE); + } nsEmbedString popupWindowFeatures; rv = popupEvent->GetPopupWindowFeatures (popupWindowFeatures); @@ -386,7 +389,7 @@ EphyPopupBlockEventListener::HandleEvent (nsIDOMEvent * aDOMEvent) #endif g_signal_emit_by_name(mOwner->mEmbed, "ge-popup-blocked", - popupWindowURIString.get(), + popupWindowURI == NULL ? NULL : popupWindowURIString.get(), popupWindowNameString.get(), popupWindowFeaturesString.get()); diff --git a/src/ephy-tab.c b/src/ephy-tab.c index 8a95ff477..2fa0c31aa 100644 --- a/src/ephy-tab.c +++ b/src/ephy-tab.c @@ -535,7 +535,7 @@ popups_manager_add (EphyTab *tab, popup = g_new0 (PopupInfo, 1); - popup->url = g_strdup (url); + popup->url = (url == NULL) ? NULL : g_strdup (url); popup->name = g_strdup (name); popup->features = g_strdup (features); @@ -651,14 +651,17 @@ popups_manager_show (PopupInfo *popup, EphyEmbed *embed; EphyEmbedSingle *single; - embed = ephy_tab_get_embed (tab); - - single = EPHY_EMBED_SINGLE - (ephy_embed_shell_get_embed_single (embed_shell)); + /* Only show popup with non NULL url */ + if (popup->url != NULL) + { + embed = ephy_tab_get_embed (tab); - ephy_embed_single_open_window (single, embed, popup->url, - popup->name, popup->features); + single = EPHY_EMBED_SINGLE + (ephy_embed_shell_get_embed_single (embed_shell)); + ephy_embed_single_open_window (single, embed, popup->url, + popup->name, popup->features); + } popups_manager_free_info (popup); } |