aboutsummaryrefslogtreecommitdiffstats
path: root/embed/mozilla/EphyWrapper.cpp
diff options
context:
space:
mode:
authorMarco Pesenti Gritti <marco@gnome.org>2003-10-27 23:18:14 +0800
committerMarco Pesenti Gritti <marco@src.gnome.org>2003-10-27 23:18:14 +0800
commit0c602edff1de6eaf85746201f94e2b1c4d815da0 (patch)
treef8eec8899ad045851561fb66b1967d930e1db813 /embed/mozilla/EphyWrapper.cpp
parent21f69a6461a12704c97fad51d7ac709faab90cdc (diff)
downloadgsoc2013-epiphany-0c602edff1de6eaf85746201f94e2b1c4d815da0.tar
gsoc2013-epiphany-0c602edff1de6eaf85746201f94e2b1c4d815da0.tar.gz
gsoc2013-epiphany-0c602edff1de6eaf85746201f94e2b1c4d815da0.tar.bz2
gsoc2013-epiphany-0c602edff1de6eaf85746201f94e2b1c4d815da0.tar.lz
gsoc2013-epiphany-0c602edff1de6eaf85746201f94e2b1c4d815da0.tar.xz
gsoc2013-epiphany-0c602edff1de6eaf85746201f94e2b1c4d815da0.tar.zst
gsoc2013-epiphany-0c602edff1de6eaf85746201f94e2b1c4d815da0.zip
Solving the wrapper mess Episode 1.
2003-10-27 Marco Pesenti Gritti <marco@gnome.org> * embed/ephy-embed.c: * embed/ephy-embed.h: * embed/mozilla/EphyWrapper.cpp: * embed/mozilla/EphyWrapper.h: * embed/mozilla/EventContext.cpp: * embed/mozilla/mozilla-embed-persist.cpp: * embed/mozilla/mozilla-embed.cpp: Solving the wrapper mess Episode 1. Cleanup EphyWrapper to use higher level apis. Do not set docshell history explicitly, it seem to pickup the registered one nicely.
Diffstat (limited to 'embed/mozilla/EphyWrapper.cpp')
-rw-r--r--embed/mozilla/EphyWrapper.cpp253
1 files changed, 46 insertions, 207 deletions
diff --git a/embed/mozilla/EphyWrapper.cpp b/embed/mozilla/EphyWrapper.cpp
index bea527fe2..a511d5b98 100644
--- a/embed/mozilla/EphyWrapper.cpp
+++ b/embed/mozilla/EphyWrapper.cpp
@@ -30,6 +30,7 @@
#include <gtkmozembed_internal.h>
#include <unistd.h>
+#include "nsIDocCharset.h"
#include "nsICommandManager.h"
#include "nsIContentViewer.h"
#include "nsIGlobalHistory.h"
@@ -89,28 +90,21 @@ EphyWrapper::~EphyWrapper ()
nsresult EphyWrapper::Init (GtkMozEmbed *mozembed)
{
- nsresult result;
+ nsresult rv;
gtk_moz_embed_get_nsIWebBrowser (mozembed,
getter_AddRefs(mWebBrowser));
if (!mWebBrowser) return NS_ERROR_FAILURE;
- nsCOMPtr<nsIDocShell> DocShell;
- result = GetDocShell (getter_AddRefs(DocShell));
- if (NS_FAILED(result) || !DocShell) return NS_ERROR_FAILURE;
-
- nsCOMPtr<nsIDocShellHistory> dsHistory = do_QueryInterface (DocShell);
- if (!dsHistory) return NS_ERROR_FAILURE;
+ rv = mWebBrowser->GetContentDOMWindow (getter_AddRefs (mDOMWindow));
+ if (NS_FAILED (rv)) return NS_ERROR_FAILURE;
mEventListener = new EphyEventListener();
mEventListener->Init (EPHY_EMBED (mozembed));
GetListener();
AttachListeners();
- nsCOMPtr<nsIGlobalHistory> inst =
- do_GetService(NS_GLOBALHISTORY_CONTRACTID, &result);
-
- return dsHistory->SetGlobalHistory(inst);
+ return NS_OK;
}
nsresult
@@ -160,33 +154,6 @@ EphyWrapper::DetachListeners(void)
mEventListener, PR_FALSE);
}
-nsresult EphyWrapper::GetDocShell (nsIDocShell **aDocShell)
-{
- nsCOMPtr<nsIDocShellTreeItem> browserAsItem;
- browserAsItem = do_QueryInterface(mWebBrowser);
- if (!browserAsItem) return NS_ERROR_FAILURE;
-
- // get the owner for that item
- nsCOMPtr<nsIDocShellTreeOwner> treeOwner;
- browserAsItem->GetTreeOwner(getter_AddRefs(treeOwner));
- if (!treeOwner) return NS_ERROR_FAILURE;
-
- // get the primary content shell as an item
- nsCOMPtr<nsIDocShellTreeItem> contentItem;
- treeOwner->GetPrimaryContentShell(getter_AddRefs(contentItem));
- if (!contentItem) return NS_ERROR_FAILURE;
-
- // QI that back to a docshell
- nsCOMPtr<nsIDocShell> DocShell;
- DocShell = do_QueryInterface(contentItem);
- if (!DocShell) return NS_ERROR_FAILURE;
-
- *aDocShell = DocShell.get();
-
- NS_IF_ADDREF(*aDocShell);
-
- return NS_OK;
-}
nsresult EphyWrapper::Print (nsIPrintSettings *options, PRBool preview)
{
nsresult result;
@@ -262,12 +229,7 @@ nsresult EphyWrapper::GetSHistory (nsISHistory **aSHistory)
{
nsresult result;
- nsCOMPtr<nsIDocShell> DocShell;
- result = GetDocShell (getter_AddRefs(DocShell));
- if (NS_FAILED(result) || !DocShell) return NS_ERROR_FAILURE;
-
- nsCOMPtr<nsIWebNavigation> ContentNav = do_QueryInterface (DocShell,
- &result);
+ nsCOMPtr<nsIWebNavigation> ContentNav = do_QueryInterface (mWebBrowser);
if (!ContentNav) return NS_ERROR_FAILURE;
nsCOMPtr<nsISHistory> SessionHistory;
@@ -285,7 +247,6 @@ nsresult EphyWrapper::Destroy ()
DetachListeners ();
mWebBrowser = nsnull;
- mChromeNav = nsnull;
return NS_OK;
}
@@ -294,12 +255,7 @@ nsresult EphyWrapper::GoToHistoryIndex (PRInt16 index)
{
nsresult result;
- nsCOMPtr<nsIDocShell> DocShell;
- result = GetDocShell (getter_AddRefs(DocShell));
- if (NS_FAILED(result) || !DocShell) return NS_ERROR_FAILURE;
-
- nsCOMPtr<nsIWebNavigation> ContentNav = do_QueryInterface (DocShell,
- &result);
+ nsCOMPtr<nsIWebNavigation> ContentNav = do_QueryInterface (mWebBrowser);
if (!ContentNav) return NS_ERROR_FAILURE;
return ContentNav->GotoIndex (index);
@@ -309,14 +265,10 @@ nsresult EphyWrapper::SetZoom (float aZoom, PRBool reflow)
{
nsresult result;
- nsCOMPtr<nsIDocShell> DocShell;
- result = GetDocShell (getter_AddRefs(DocShell));
- if (NS_FAILED(result) || !DocShell) return NS_ERROR_FAILURE;
-
if (reflow)
{
nsCOMPtr<nsIContentViewer> contentViewer;
- result = DocShell->GetContentViewer (getter_AddRefs(contentViewer));
+ result = GetContentViewer (getter_AddRefs(contentViewer));
if (!NS_SUCCEEDED (result) || !contentViewer) return NS_ERROR_FAILURE;
nsCOMPtr<nsIMarkupDocumentViewer> mdv = do_QueryInterface(contentViewer,
@@ -327,6 +279,10 @@ nsresult EphyWrapper::SetZoom (float aZoom, PRBool reflow)
}
else
{
+ nsCOMPtr<nsIDocShell> DocShell;
+ DocShell = do_GetInterface (mWebBrowser);
+ if (!DocShell) return NS_ERROR_FAILURE;
+
SetZoomOnDocshell (aZoom, DocShell);
nsCOMPtr<nsIDocShellTreeNode> docShellNode(do_QueryInterface(DocShell));
@@ -366,16 +322,19 @@ nsresult EphyWrapper::SetZoomOnDocshell (float aZoom, nsIDocShell *DocShell)
return DeviceContext->SetTextZoom (aZoom);
}
+nsresult EphyWrapper::GetContentViewer (nsIContentViewer **aViewer)
+{
+ nsCOMPtr<nsIDocShell> ourDocShell(do_GetInterface(mWebBrowser));
+ NS_ENSURE_TRUE(ourDocShell, NS_ERROR_FAILURE);
+ return ourDocShell->GetContentViewer(aViewer);
+}
+
nsresult EphyWrapper::GetZoom (float *aZoom)
{
nsresult result;
- nsCOMPtr<nsIDocShell> DocShell;
- result = GetDocShell (getter_AddRefs(DocShell));
- if (NS_FAILED(result) || !DocShell) return NS_ERROR_FAILURE;
-
nsCOMPtr<nsIContentViewer> contentViewer;
- result = DocShell->GetContentViewer (getter_AddRefs(contentViewer));
+ result = GetContentViewer (getter_AddRefs(contentViewer));
if (!NS_SUCCEEDED (result) || !contentViewer) return NS_ERROR_FAILURE;
nsCOMPtr<nsIMarkupDocumentViewer> mdv = do_QueryInterface(contentViewer,
@@ -385,29 +344,12 @@ nsresult EphyWrapper::GetZoom (float *aZoom)
return mdv->GetTextZoom (aZoom);
}
-nsresult EphyWrapper::GetFocusedDOMWindow (nsIDOMWindow **aDOMWindow)
+nsresult EphyWrapper::GetDocument (nsIDOMDocument **aDOMDocument)
{
- nsresult rv;
-
- nsCOMPtr<nsIWebBrowserFocus> focus = do_GetInterface(mWebBrowser, &rv);
- if (NS_FAILED(rv) || !focus) return NS_ERROR_FAILURE;
-
- rv = focus->GetFocusedWindow (aDOMWindow);
- if (NS_FAILED(rv))
- rv = mWebBrowser->GetContentDOMWindow (aDOMWindow);
- return rv;
+ return mDOMWindow->GetDocument (aDOMDocument);
}
-nsresult EphyWrapper::GetDOMWindow (nsIDOMWindow **aDOMWindow)
-{
- nsresult rv;
-
- rv = mWebBrowser->GetContentDOMWindow (aDOMWindow);
-
- return rv;
-}
-
-nsresult EphyWrapper::GetDOMDocument (nsIDOMDocument **aDOMDocument)
+nsresult EphyWrapper::GetTargetDocument (nsIDOMDocument **aDOMDocument)
{
nsresult result;
@@ -422,30 +364,19 @@ nsresult EphyWrapper::GetDOMDocument (nsIDOMDocument **aDOMDocument)
}
/* Use the focused document */
+ nsCOMPtr<nsIWebBrowserFocus> webBrowserFocus;
+ webBrowserFocus = do_QueryInterface (mWebBrowser);
+ if (!webBrowserFocus) return NS_ERROR_FAILURE;
+
nsCOMPtr<nsIDOMWindow> DOMWindow;
- result = GetFocusedDOMWindow (getter_AddRefs(DOMWindow));
+ result = webBrowserFocus->GetFocusedWindow (getter_AddRefs(DOMWindow));
if (NS_SUCCEEDED(result) && DOMWindow)
{
return DOMWindow->GetDocument (aDOMDocument);
}
/* Use the main document */
- return GetMainDOMDocument (aDOMDocument);
-}
-
-nsresult EphyWrapper::GetMainDOMDocument (nsIDOMDocument **aDOMDocument)
-{
- nsresult result;
-
- nsCOMPtr<nsIDocShell> DocShell;
- result = GetDocShell (getter_AddRefs(DocShell));
- if (NS_FAILED(result) || !DocShell) return NS_ERROR_FAILURE;
-
- nsCOMPtr<nsIContentViewer> contentViewer;
- result = DocShell->GetContentViewer (getter_AddRefs(contentViewer));
- if (!NS_SUCCEEDED (result) || !contentViewer) return NS_ERROR_FAILURE;
-
- return contentViewer->GetDOMDocument (aDOMDocument);
+ return mDOMWindow->GetDocument (aDOMDocument);
}
nsresult EphyWrapper::GetSHInfo (PRInt32 *count, PRInt32 *index)
@@ -527,36 +458,14 @@ nsresult EphyWrapper::Find (PRBool backwards,
return finder->FindNext(didFind);
}
-nsresult EphyWrapper::GetWebNavigation(nsIWebNavigation **aWebNavigation)
-{
- nsresult result;
-
- nsCOMPtr<nsIDOMWindow> DOMWindow;
- result = GetFocusedDOMWindow (getter_AddRefs(DOMWindow));
- if (NS_FAILED(result) || !DOMWindow) return NS_ERROR_FAILURE;
-
- nsCOMPtr<nsIScriptGlobalObject> scriptGlobal = do_QueryInterface(DOMWindow);
- if (!scriptGlobal) return NS_ERROR_FAILURE;
-
- nsCOMPtr<nsIDocShell> docshell;
- if (NS_FAILED(scriptGlobal->GetDocShell(getter_AddRefs(docshell))))
- return NS_ERROR_FAILURE;
-
- nsCOMPtr<nsIWebNavigation> wn = do_QueryInterface (docshell, &result);
- if (!wn || !NS_SUCCEEDED (result)) return NS_ERROR_FAILURE;
-
- NS_IF_ADDREF(*aWebNavigation = wn);
- return NS_OK;
-}
-
nsresult EphyWrapper::LoadDocument(nsISupports *aPageDescriptor,
PRUint32 aDisplayType)
{
nsresult rv;
nsCOMPtr<nsIWebNavigation> wn;
- rv = GetWebNavigation(getter_AddRefs(wn));
- if (!wn || !NS_SUCCEEDED(rv)) return NS_ERROR_FAILURE;
+ wn = do_QueryInterface (mWebBrowser);
+ if (!wn) return NS_ERROR_FAILURE;
nsCOMPtr<nsIWebPageDescriptor> wpd = do_QueryInterface(wn, &rv);
if (!wpd || !NS_SUCCEEDED(rv)) return NS_ERROR_FAILURE;
@@ -569,8 +478,8 @@ nsresult EphyWrapper::GetPageDescriptor(nsISupports **aPageDescriptor)
nsresult rv;
nsCOMPtr<nsIWebNavigation> wn;
- rv = GetWebNavigation(getter_AddRefs(wn));
- if (!wn || !NS_SUCCEEDED(rv)) return NS_ERROR_FAILURE;
+ wn = do_QueryInterface (mWebBrowser);
+ if (!wn) return NS_ERROR_FAILURE;
nsCOMPtr<nsIWebPageDescriptor> wpd = do_QueryInterface(wn, &rv);
if (!wpd || !NS_SUCCEEDED(rv)) return NS_ERROR_FAILURE;
@@ -578,13 +487,13 @@ nsresult EphyWrapper::GetPageDescriptor(nsISupports **aPageDescriptor)
return wpd->GetCurrentDescriptor(aPageDescriptor);
}
-nsresult EphyWrapper::GetMainDocumentUrl (nsCString &url)
+nsresult EphyWrapper::GetDocumentUrl (nsCString &url)
{
nsresult result;
nsCOMPtr<nsIDOMDocument> DOMDocument;
- result = GetMainDOMDocument (getter_AddRefs(DOMDocument));
+ result = mDOMWindow->GetDocument (getter_AddRefs(DOMDocument));
if (NS_FAILED(result) || !DOMDocument) return NS_ERROR_FAILURE;
nsCOMPtr<nsIDocument> doc = do_QueryInterface(DOMDocument);
@@ -601,13 +510,13 @@ nsresult EphyWrapper::GetMainDocumentUrl (nsCString &url)
return uri->GetSpec (url);
}
-nsresult EphyWrapper::GetDocumentUrl (nsCString &url)
+nsresult EphyWrapper::GetTargetDocumentUrl (nsCString &url)
{
nsresult result;
nsCOMPtr<nsIDOMDocument> DOMDocument;
- result = GetDOMDocument (getter_AddRefs(DOMDocument));
+ result = GetTargetDocument (getter_AddRefs(DOMDocument));
if (NS_FAILED(result) || !DOMDocument) return NS_ERROR_FAILURE;
nsCOMPtr<nsIDocument> doc = do_QueryInterface(DOMDocument);
@@ -626,88 +535,18 @@ nsresult EphyWrapper::GetDocumentUrl (nsCString &url)
return NS_OK;
}
-nsresult EphyWrapper::CopyHistoryTo (EphyWrapper *dest)
-{
- nsresult result;
- int count,index;
-
- nsCOMPtr<nsIDocShell> DocShell;
- result = GetDocShell (getter_AddRefs(DocShell));
- if (NS_FAILED(result) || !DocShell) return NS_ERROR_FAILURE;
-
- nsCOMPtr<nsIWebNavigation> wn_src = do_QueryInterface (DocShell,
- &result);
- if (!wn_src) return NS_ERROR_FAILURE;
-
- nsCOMPtr<nsISHistory> h_src;
- result = wn_src->GetSessionHistory (getter_AddRefs (h_src));
- if (!NS_SUCCEEDED(result) || (!h_src)) return NS_ERROR_FAILURE;
-
- nsCOMPtr<nsIDocShell> destDocShell;
- result = dest->GetDocShell (getter_AddRefs(destDocShell));
- if (NS_FAILED(result) || !DocShell) return NS_ERROR_FAILURE;
-
- nsCOMPtr<nsIWebNavigation> wn_dest = do_QueryInterface (destDocShell,
- &result);
- if (!wn_dest) return NS_ERROR_FAILURE;
-
- nsCOMPtr<nsISHistory> h_dest;
- result = wn_dest->GetSessionHistory (getter_AddRefs (h_dest));
- if (!NS_SUCCEEDED (result) || (!h_dest)) return NS_ERROR_FAILURE;
-
- nsCOMPtr<nsISHistoryInternal> hi_dest = do_QueryInterface (h_dest);
- if (!hi_dest) return NS_ERROR_FAILURE;
-
- h_src->GetCount (&count);
- h_src->GetIndex (&index);
-
- if (count) {
- nsCOMPtr<nsIHistoryEntry> he;
- nsCOMPtr<nsISHEntry> she;
-
- for (PRInt32 i = 0; i < count; i++) {
-
- result = h_src->GetEntryAtIndex (i, PR_FALSE,
- getter_AddRefs (he));
- if (!NS_SUCCEEDED(result) || (!he))
- return NS_ERROR_FAILURE;
-
- she = do_QueryInterface (he);
- if (!she) return NS_ERROR_FAILURE;
-
- result = hi_dest->AddEntry (she, PR_TRUE);
- if (!NS_SUCCEEDED(result) || (!she))
- return NS_ERROR_FAILURE;
- }
-
- result = wn_dest->GotoIndex(index);
- if (!NS_SUCCEEDED(result)) return NS_ERROR_FAILURE;
- }
-
- return NS_OK;
-}
-
nsresult EphyWrapper::ForceEncoding (const char *encoding)
{
nsresult result;
- nsCOMPtr<nsIDocShell> DocShell;
- result = GetDocShell (getter_AddRefs(DocShell));
- if (NS_FAILED(result) || !DocShell) return NS_ERROR_FAILURE;
-
- nsCOMPtr<nsIContentViewer> contentViewer;
- result = DocShell->GetContentViewer (getter_AddRefs(contentViewer));
- if (!NS_SUCCEEDED (result) || !contentViewer) return NS_ERROR_FAILURE;
+ nsCOMPtr<nsIDocShell> docShell;
+ docShell = do_GetInterface (mWebBrowser);
+ if (!docShell) return NS_ERROR_FAILURE;
- nsCOMPtr<nsIMarkupDocumentViewer> mdv = do_QueryInterface(contentViewer,
- &result);
- if (NS_FAILED(result) || !mdv) return NS_ERROR_FAILURE;
+ nsCOMPtr<nsIDocCharset> docCharset;
+ docCharset = do_QueryInterface (docShell);
-#if MOZILLA_SNAPSHOT > 9
- result = mdv->SetForceCharacterSet (nsDependentCString(encoding));
-#else
- result = mdv->SetForceCharacterSet (NS_ConvertUTF8toUCS2(encoding).get());
-#endif
+ result = docCharset->SetCharset (encoding);
return result;
}
@@ -732,7 +571,7 @@ nsresult EphyWrapper::GetEncodingInfo (EphyEncodingInfo **infoptr)
EphyEncodingInfo *info;
nsCOMPtr<nsIDOMDocument> domDoc;
- result = GetDOMDocument (getter_AddRefs(domDoc));
+ result = GetTargetDocument (getter_AddRefs(domDoc));
if (NS_FAILED (result) || !domDoc) return NS_ERROR_FAILURE;
nsCOMPtr<nsIDocument> doc = do_QueryInterface(domDoc, &result);
@@ -751,8 +590,8 @@ nsresult EphyWrapper::GetEncodingInfo (EphyEncodingInfo **infoptr)
info->encoding_source = (EphyEncodingSource) source;
nsCOMPtr<nsIDocShell> ds;
- result = GetDocShell (getter_AddRefs(ds));
- if (NS_FAILED(result) || !ds) return NS_ERROR_FAILURE;
+ ds = do_GetInterface (mWebBrowser);
+ if (!ds) return NS_ERROR_FAILURE;
nsCOMPtr<nsIDocumentCharsetInfo> ci;
result = ds->GetDocumentCharsetInfo (getter_AddRefs (ci));