Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 153902 | Differences between
and this patch

Collapse All | Expand All

(-)embed/mozilla/EphyBrowser.cpp (+52 lines)
Lines 1524-1526 EphyBrowser::Close () Link Here
1524
1524
1525
	return domWin->Close();
1525
	return domWin->Close();
1526
}
1526
}
1527
1528
nsresult
1529
EphyBrowser::GetPIDOMWindow(nsPIDOMWindow **aPIWin)
1530
{
1531
  *aPIWin = nsnull;
1532
1533
  // get the private DOM window
1534
  nsCOMPtr<nsPIDOMWindow> domWindowPrivate = do_QueryInterface(mDOMWindow);
1535
1536
  // and the root window for that DOM window
1537
  *aPIWin = domWindowPrivate->GetPrivateRoot();
1538
1539
  if (*aPIWin) 
1540
  {
1541
    NS_ADDREF(*aPIWin);
1542
    return NS_OK;
1543
  }
1544
1545
  return NS_ERROR_FAILURE;
1546
1547
}
1548
1549
nsresult
1550
EphyBrowser::LoadURI(const char *aURI,
1551
		     PRUint32 aLoadFlags,
1552
		     nsIURI *aReferrer)
1553
{
1554
	nsString uURI;
1555
	nsresult rv = NS_OK;
1556
1557
 	NS_CStringToUTF16 (nsCString (aURI), NS_CSTRING_ENCODING_UTF8, uURI);
1558
1559
	if (uURI.Length() == 0) return NS_OK;
1560
 
1561
	nsCOMPtr<nsIWebNavigation> contentNav = do_QueryInterface (mWebBrowser);
1562
	NS_ENSURE_TRUE (contentNav, NS_ERROR_FAILURE);
1563
1564
	nsCOMPtr<nsPIDOMWindow> piWin;
1565
	rv = GetPIDOMWindow(getter_AddRefs(piWin));
1566
  	NS_ENSURE_SUCCESS (rv, rv);
1567
1568
	nsAutoPopupStatePusher popupStatePusher(piWin, openAllowed);
1569
1570
	rv = contentNav->LoadURI(uURI.get(),   // URI string
1571
			 	 aLoadFlags,   // Load flags
1572
			 	 aReferrer,    // Referring URI
1573
			 	 nsnull,       // Post data
1574
			 	 nsnull);      // extra headers
1575
1576
	return rv;
1577
}
1578
(-)embed/mozilla/EphyBrowser.h (+6 lines)
Lines 36-41 Link Here
36
#include <nsIWebBrowserFocus.h>
36
#include <nsIWebBrowserFocus.h>
37
#include <nsIWebBrowser.h>
37
#include <nsIWebBrowser.h>
38
#include <nsIWebNavigation.h>
38
#include <nsIWebNavigation.h>
39
#include <nsPIDOMWindow.h>
39
40
40
#ifdef ALLOW_PRIVATE_API
41
#ifdef ALLOW_PRIVATE_API
41
#include <nsIContentViewer.h>
42
#include <nsIContentViewer.h>
Lines 172-177 public: Link Here
172
	nsresult GetDocumentURI (nsIURI **aURI);
173
	nsresult GetDocumentURI (nsIURI **aURI);
173
	nsresult GetTargetDocumentURI (nsIURI **aURI);
174
	nsresult GetTargetDocumentURI (nsIURI **aURI);
174
	nsresult GetDOMWindow (nsIDOMWindow **window);
175
	nsresult GetDOMWindow (nsIDOMWindow **window);
176
	nsresult GetPIDOMWindow(nsPIDOMWindow **aPIWin);
175
177
176
	nsresult GetHasModifiedForms (PRBool *modified);
178
	nsresult GetHasModifiedForms (PRBool *modified);
177
179
Lines 182-187 public: Link Here
182
	                       PRBool copy_forward, PRBool copy_current);
184
	                       PRBool copy_forward, PRBool copy_current);
183
185
184
	nsresult Close ();
186
	nsresult Close ();
187
188
	nsresult LoadURI(const char *aURI, 
189
			 PRUint32 aLoadFlags = nsIWebNavigation::LOAD_FLAGS_NONE, 
190
			 nsIURI *aURI = nsnull);
185
191
186
        EphyEmbedDocumentType GetDocumentType ();
192
        EphyEmbedDocumentType GetDocumentType ();
187
193
(-)embed/mozilla/mozilla-embed.cpp (+37 lines)
Lines 324-329 impl_load_url (EphyEmbed *embed, Link Here
324
        gtk_moz_embed_load_url (GTK_MOZ_EMBED(embed), url);
324
        gtk_moz_embed_load_url (GTK_MOZ_EMBED(embed), url);
325
}
325
}
326
326
327
static char * impl_get_location (EphyEmbed *embed, gboolean toplevel);
328
329
static void
330
impl_load (EphyEmbed *embed, 
331
           const char *url,
332
	   EphyEmbedLoadFlags flags,
333
	   EphyEmbed *preview_embed)
334
{
335
	EphyBrowser *browser;
336
337
	browser = MOZILLA_EMBED(embed)->priv->browser;
338
	g_return_if_fail (browser != NULL);
339
340
	nsCOMPtr<nsIURI> uri;
341
	if (preview_embed != NULL)
342
	{
343
		EphyBrowser *pbrowser;
344
		nsresult rv;
345
346
		pbrowser = MOZILLA_EMBED(preview_embed)->priv->browser;
347
		if (pbrowser != NULL)
348
		{
349
			pbrowser->GetDocumentURI (getter_AddRefs (uri));
350
		}
351
	}
352
353
	if (flags & EPHY_EMBED_LOAD_FLAGS_ALLOW_THIRD_PARTY_FIXUP)
354
	{
355
		browser->LoadURI (url, nsIWebNavigation::LOAD_FLAGS_ALLOW_THIRD_PARTY_FIXUP, uri);	
356
	}
357
	else
358
	{
359
		browser->LoadURI (url, nsIWebNavigation::LOAD_FLAGS_NONE, uri);	
360
	}
361
}
362
327
static void
363
static void
328
impl_stop_load (EphyEmbed *embed)
364
impl_stop_load (EphyEmbed *embed)
329
{
365
{
Lines 1114-1119 static void Link Here
1114
ephy_embed_iface_init (EphyEmbedIface *iface)
1150
ephy_embed_iface_init (EphyEmbedIface *iface)
1115
{
1151
{
1116
	iface->load_url = impl_load_url; 
1152
	iface->load_url = impl_load_url; 
1153
	iface->load = impl_load; 
1117
	iface->stop_load = impl_stop_load;
1154
	iface->stop_load = impl_stop_load;
1118
	iface->can_go_back = impl_can_go_back;
1155
	iface->can_go_back = impl_can_go_back;
1119
	iface->can_go_forward =impl_can_go_forward;
1156
	iface->can_go_forward =impl_can_go_forward;
(-)embed/ephy-embed.h (+14 lines)
Lines 63-68 typedef enum Link Here
63
	EPHY_EMBED_CHROME_BOOKMARKSBAR	= 1 << 3
63
	EPHY_EMBED_CHROME_BOOKMARKSBAR	= 1 << 3
64
} EphyEmbedChrome;
64
} EphyEmbedChrome;
65
65
66
typedef enum
67
{
68
	EPHY_EMBED_LOAD_FLAGS_NONE			= 1 << 0,
69
	EPHY_EMBED_LOAD_FLAGS_ALLOW_THIRD_PARTY_FIXUP 	= 1 << 1,
70
} EphyEmbedLoadFlags;
71
66
#define EPHY_EMBED_CHROME_ALL (EPHY_EMBED_CHROME_MENUBAR |	\
72
#define EPHY_EMBED_CHROME_ALL (EPHY_EMBED_CHROME_MENUBAR |	\
67
			       EPHY_EMBED_CHROME_TOOLBAR |	\
73
			       EPHY_EMBED_CHROME_TOOLBAR |	\
68
			       EPHY_EMBED_CHROME_STATUSBAR |	\
74
			       EPHY_EMBED_CHROME_STATUSBAR |	\
Lines 157-162 struct _EphyEmbedIface Link Here
157
	/* Methods  */
163
	/* Methods  */
158
	void		   (* load_url)			(EphyEmbed *embed,
164
	void		   (* load_url)			(EphyEmbed *embed,
159
							 const char *url);
165
							 const char *url);
166
	void		   (* load)			(EphyEmbed *embed,
167
							 const char *url,
168
							 EphyEmbedLoadFlags flags,
169
							 EphyEmbed *referring_embed);
160
	void		   (* stop_load)		(EphyEmbed *embed);
170
	void		   (* stop_load)		(EphyEmbed *embed);
161
	void		   (* reload)			(EphyEmbed *embed,
171
	void		   (* reload)			(EphyEmbed *embed,
162
							 gboolean force);
172
							 gboolean force);
Lines 232-237 GType ephy_embed_get_type (void); Link Here
232
/* Base */
242
/* Base */
233
void		  ephy_embed_load_url			(EphyEmbed *embed,
243
void		  ephy_embed_load_url			(EphyEmbed *embed,
234
							 const char *url);
244
							 const char *url);
245
void		  ephy_embed_load			(EphyEmbed *embed,
246
							 const char *url,
247
							 EphyEmbedLoadFlags flags,
248
							 EphyEmbed *referring_embed);
235
249
236
void		  ephy_embed_stop_load			(EphyEmbed *embed);
250
void		  ephy_embed_stop_load			(EphyEmbed *embed);
237
251
(-)embed/ephy-embed.c (+19 lines)
Lines 423-428 ephy_embed_load_url (EphyEmbed *embed, Link Here
423
}
423
}
424
424
425
/**
425
/**
426
 * ephy_embed_load:
427
 * @embed: an #EphyEmbed
428
 * @url: an URL
429
 * @flags: flags modifying load behaviour
430
 * @previous_embed: the referrer embed or %NULL
431
 *
432
 * Loads a new web page in @embed.
433
 **/
434
void
435
ephy_embed_load (EphyEmbed *embed,
436
		 const char *url,
437
		 EphyEmbedLoadFlags flags,
438
		 EphyEmbed *referring_embed)
439
{
440
	EphyEmbedIface *iface = EPHY_EMBED_GET_IFACE (embed);
441
	iface->load (embed, url, flags, referring_embed);
442
}
443
444
/**
426
 * ephy_embed_stop_load:
445
 * ephy_embed_stop_load:
427
 * @embed: an #EphyEmbed
446
 * @embed: an #EphyEmbed
428
 *
447
 *
(-)src/ephy-link.h (-1 / +2 lines)
Lines 41-47 typedef enum Link Here
41
{
41
{
42
	EPHY_LINK_NEW_WINDOW	= 1 << 0,
42
	EPHY_LINK_NEW_WINDOW	= 1 << 0,
43
	EPHY_LINK_NEW_TAB	= 1 << 1,
43
	EPHY_LINK_NEW_TAB	= 1 << 1,
44
	EPHY_LINK_JUMP_TO	= 1 << 2
44
	EPHY_LINK_JUMP_TO	= 1 << 2,
45
	EPHY_LINK_ALLOW_FIXUP	= 1 << 3
45
} EphyLinkFlags;
46
} EphyLinkFlags;
46
47
47
struct _EphyLinkIface
48
struct _EphyLinkIface
(-)src/ephy-location-action.c (-2 / +2 lines)
Lines 139-145 action_activated_cb (GtkEntryCompletion Link Here
139
		if (url == NULL) return;
139
		if (url == NULL) return;
140
140
141
 		ephy_link_open (EPHY_LINK (action), url, NULL,
141
 		ephy_link_open (EPHY_LINK (action), url, NULL,
142
			        ephy_link_flags_from_current_event ());
142
			        ephy_link_flags_from_current_event () | EPHY_LINK_ALLOW_FIXUP);
143
143
144
		g_free (url);
144
		g_free (url);
145
	}
145
	}
Lines 162-168 entry_activate_cb (GtkEntry *entry, Link Here
162
	g_return_if_fail (address != NULL);
162
	g_return_if_fail (address != NULL);
163
163
164
	ephy_link_open (EPHY_LINK (action), address, NULL, 
164
	ephy_link_open (EPHY_LINK (action), address, NULL, 
165
		        ephy_link_flags_from_current_event ());
165
		        ephy_link_flags_from_current_event () | EPHY_LINK_ALLOW_FIXUP);
166
166
167
	g_free (address);
167
	g_free (address);
168
}
168
}
(-)src/ephy-window.c (-1 / +17 lines)
Lines 2970-2976 ephy_window_open_link (EphyLink *link, Link Here
2970
		tab = ephy_window_get_active_tab (window);
2970
		tab = ephy_window_get_active_tab (window);
2971
	}
2971
	}
2972
2972
2973
	if (flags != 0)
2973
	if (flags  & (EPHY_LINK_JUMP_TO | 
2974
		      EPHY_LINK_NEW_TAB | 
2975
		      EPHY_LINK_NEW_WINDOW))
2974
	{
2976
	{
2975
		EphyNewTabFlags ntflags = EPHY_NEW_TAB_OPEN_PAGE;
2977
		EphyNewTabFlags ntflags = EPHY_NEW_TAB_OPEN_PAGE;
2976
2978
Lines 2987-2992 ephy_window_open_link (EphyLink *link, Link Here
2987
		{
2989
		{
2988
			ntflags |= EPHY_NEW_TAB_IN_EXISTING_WINDOW;
2990
			ntflags |= EPHY_NEW_TAB_IN_EXISTING_WINDOW;
2989
		}
2991
		}
2992
		if (flags & EPHY_LINK_ALLOW_FIXUP)
2993
		{
2994
			ntflags |= EPHY_NEW_TAB_ALLOW_FIXUP;
2995
		}
2990
2996
2991
		new_tab = ephy_shell_new_tab
2997
		new_tab = ephy_shell_new_tab
2992
				(ephy_shell,
2998
				(ephy_shell,
Lines 2999-3005 ephy_window_open_link (EphyLink *link, Link Here
2999
		
3005
		
3000
		embed = ephy_tab_get_embed (tab);
3006
		embed = ephy_tab_get_embed (tab);
3001
3007
3008
		if (flags & EPHY_LINK_ALLOW_FIXUP)
3009
		{
3010
			ephy_embed_load (embed, 
3011
					 address, 
3012
					 EPHY_EMBED_LOAD_FLAGS_ALLOW_THIRD_PARTY_FIXUP,
3013
					 NULL);
3014
		}
3015
		else
3016
		{
3002
		ephy_embed_load_url (embed, address);
3017
		ephy_embed_load_url (embed, address);
3018
		}
3003
3019
3004
		if (address == NULL || address[0] == '\0' || strcmp (address, "about:blank") == 0)
3020
		if (address == NULL || address[0] == '\0' || strcmp (address, "about:blank") == 0)
3005
		{
3021
		{
(-)src/ephy-shell.c (-1 / +13 lines)
Lines 530-537 ephy_shell_new_tab_full (EphyShell *shel Link Here
530
	}
530
	}
531
	else if (flags & EPHY_NEW_TAB_OPEN_PAGE)
531
	else if (flags & EPHY_NEW_TAB_OPEN_PAGE)
532
	{
532
	{
533
		EphyEmbedLoadFlags load_flags = 0;
534
533
		g_assert (url != NULL);
535
		g_assert (url != NULL);
534
		ephy_embed_load_url (embed, url);
536
537
		if (flags & EPHY_NEW_TAB_ALLOW_FIXUP)
538
		{
539
			load_flags = EPHY_EMBED_LOAD_FLAGS_ALLOW_THIRD_PARTY_FIXUP;
540
		}
541
		else
542
		{
543
			load_flags = EPHY_EMBED_LOAD_FLAGS_NONE;
544
		}
545
		ephy_embed_load (embed, url, load_flags, previous_embed);
546
535
		is_empty = url_is_empty (url);
547
		is_empty = url_is_empty (url);
536
	}
548
	}
537
549
(-)src/ephy-shell.h (+4 lines)
Lines 62-67 typedef enum Link Here
62
	EPHY_NEW_TAB_JUMP		= 1 << 9,
62
	EPHY_NEW_TAB_JUMP		= 1 << 9,
63
	EPHY_NEW_TAB_IN_NEW_WINDOW	= 1 << 10,
63
	EPHY_NEW_TAB_IN_NEW_WINDOW	= 1 << 10,
64
	EPHY_NEW_TAB_IN_EXISTING_WINDOW	= 1 << 11,
64
	EPHY_NEW_TAB_IN_EXISTING_WINDOW	= 1 << 11,
65
66
	/* The way to load */
67
	EPHY_NEW_TAB_ALLOW_FIXUP	= 1 << 12,
68
	
65
} EphyNewTabFlags;
69
} EphyNewTabFlags;
66
70
67
struct _EphyShell
71
struct _EphyShell

Return to bug 153902