Initial import of ephy (rev# 7126) from svn
[ephy-soc.git] / embed / mozilla / EphyBrowser.h
blobfc1496445690b611b7e3fa97ef5709c4a4170c57
1 /*
2 * Copyright © 2000-2004 Marco Pesenti Gritti
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2, or (at your option)
7 * any later version.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18 * $Id: EphyBrowser.h 6952 2007-03-11 19:42:02Z chpe $
21 #ifndef EPHY_BROWSER_H
22 #define EPHY_BROWSER_H
24 #include "ephy-embed.h"
25 #include <gtk/gtkwidget.h>
27 #include <gtkmozembed.h>
28 #include <nsCOMPtr.h>
29 #include <nsIDOMContextMenuListener.h>
30 #include <nsIDOMDocument.h>
31 #include <nsIDOMEventListener.h>
32 #include <nsIDOMEventTarget.h>
33 #include <nsIDOMWindow.h>
34 #include <nsIRequest.h>
35 #include <nsISHistory.h>
36 #include <nsIWebBrowserFocus.h>
37 #include <nsIWebBrowser.h>
38 #include <nsIWebNavigation.h>
39 #include <nsPIDOMWindow.h>
41 #ifdef ALLOW_PRIVATE_API
42 #include <nsIContentViewer.h>
43 #endif
45 #ifdef HAVE_MOZILLA_PSM
46 #include <nsISecureBrowserUI.h>
47 #endif
49 class EphyBrowser;
51 class EphyEventListener : public nsIDOMEventListener
53 public:
54 NS_DECL_ISUPPORTS
56 // nsIDOMEventListener
57 NS_IMETHOD HandleEvent(nsIDOMEvent* aEvent) = 0;
59 EphyEventListener(EphyBrowser *aOwner) : mOwner(aOwner) { };
60 virtual ~EphyEventListener() { };
62 protected:
63 EphyBrowser *mOwner;
66 class EphyDOMLinkEventListener : public EphyEventListener
68 public:
69 NS_IMETHOD HandleEvent(nsIDOMEvent* aEvent);
71 EphyDOMLinkEventListener(EphyBrowser *aOwner) : EphyEventListener(aOwner) { };
72 private:
73 nsresult GetDocURI (nsIDOMElement *aElement,
74 nsIURI **aDocURI);
78 class EphyPopupBlockEventListener : public EphyEventListener
80 public:
81 NS_IMETHOD HandleEvent(nsIDOMEvent* aEvent);
83 EphyPopupBlockEventListener(EphyBrowser *aOwner) : EphyEventListener(aOwner) { };
86 class EphyModalAlertEventListener : public EphyEventListener
88 public:
89 NS_IMETHOD HandleEvent(nsIDOMEvent* aEvent);
91 EphyModalAlertEventListener(EphyBrowser *aOwner) : EphyEventListener(aOwner) { };
94 class EphyMiscDOMEventsListener : public EphyEventListener
96 public:
97 NS_IMETHOD HandleEvent(nsIDOMEvent* aEvent);
99 EphyMiscDOMEventsListener(EphyBrowser *aOwner) : EphyEventListener(aOwner) { };
102 class EphyDOMScrollEventListener : public EphyEventListener
104 public:
105 NS_IMETHOD HandleEvent(nsIDOMEvent* aEvent);
107 EphyDOMScrollEventListener(EphyBrowser *aOwner) : EphyEventListener(aOwner) { };
110 class EphyContextMenuListener : public nsIDOMContextMenuListener
112 public:
113 NS_DECL_ISUPPORTS
115 // nsIDOMContextMenuListener
116 NS_IMETHOD ContextMenu(nsIDOMEvent *aEvent);
117 NS_IMETHOD HandleEvent(nsIDOMEvent *aEvent);
119 EphyContextMenuListener(EphyBrowser *aOwner) : mOwner(aOwner) { };
120 virtual ~EphyContextMenuListener() { };
122 protected:
123 EphyBrowser *mOwner;
126 class EphyBrowser
128 friend class EphyEventListener;
129 friend class EphyDOMLinkEventListener;
130 friend class EphyMiscDOMEventsListener;
131 friend class EphyDOMScrollEventListener;
132 friend class EphyPopupBlockEventListener;
133 friend class EphyModalAlertEventListener;
134 friend class EphyContextMenuListener;
135 public:
136 EphyBrowser();
137 ~EphyBrowser();
139 nsresult Init (GtkMozEmbed *mozembed);
140 nsresult Destroy (void);
142 nsresult DoCommand (const char *command);
143 nsresult GetCommandState (const char *command, PRBool *enabled);
145 nsresult SetZoom (float aTextZoom);
146 nsresult GetZoom (float *aTextZoom);
148 nsresult ScrollLines (PRInt32 aNumLines);
149 nsresult ScrollPages (PRInt32 aNumPages);
150 nsresult ScrollPixels (PRInt32 aDeltaX, PRInt32 aDeltaY);
152 nsresult Print ();
153 nsresult SetPrintPreviewMode (PRBool previewMode);
154 nsresult PrintPreviewNumPages (int *numPages);
155 nsresult PrintPreviewNavigate(PRInt16 navType, PRInt32 pageNum);
157 nsresult GetPageDescriptor(nsISupports **aPageDescriptor);
159 nsresult GetSHInfo (PRInt32 *count, PRInt32 *index);
160 nsresult GetSHTitleAtIndex (PRInt32 index, PRUnichar **title);
161 nsresult GetSHUrlAtIndex (PRInt32 index, nsACString &url);
162 nsresult GoToHistoryIndex (PRInt16 index);
164 nsresult ForceEncoding (const char *encoding);
165 nsresult GetEncoding (nsACString &encoding);
166 nsresult GetForcedEncoding (nsACString &encoding);
168 nsresult PushTargetDocument (nsIDOMDocument *domDoc);
169 nsresult PopTargetDocument ();
171 nsresult GetDocument (nsIDOMDocument **aDOMDocument);
172 nsresult GetTargetDocument (nsIDOMDocument **aDOMDocument);
173 nsresult GetDocumentURI (nsIURI **aURI);
174 nsresult GetTargetDocumentURI (nsIURI **aURI);
175 nsresult GetDOMWindow (nsIDOMWindow **window);
176 nsresult GetPIDOMWindow(nsPIDOMWindow **aPIWin);
178 nsresult GetHasModifiedForms (PRBool *modified);
180 nsresult GetSecurityInfo (PRUint32 *aState, nsACString &aDescription);
181 nsresult ShowCertificate ();
183 nsresult CopySHistory (EphyBrowser *dest, PRBool copy_back,
184 PRBool copy_forward, PRBool copy_current);
186 nsresult Close ();
188 nsresult LoadURI(const char *aURI,
189 PRUint32 aLoadFlags = nsIWebNavigation::LOAD_FLAGS_NONE,
190 nsIURI *aURI = nsnull);
192 EphyEmbedDocumentType GetDocumentType ();
194 nsCOMPtr<nsIWebBrowser> mWebBrowser;
195 private:
196 GtkWidget *mEmbed;
198 nsCOMPtr<nsIWebBrowserFocus> mWebBrowserFocus;
199 nsCOMPtr<nsIDOMDocument> mTargetDocument;
200 nsCOMPtr<nsIDOMEventTarget> mEventTarget;
201 nsCOMPtr<nsIDOMWindow> mDOMWindow;
202 EphyDOMLinkEventListener *mDOMLinkEventListener;
203 EphyMiscDOMEventsListener *mMiscDOMEventsListener;
204 EphyDOMScrollEventListener *mDOMScrollEventListener;
205 EphyPopupBlockEventListener *mPopupBlockEventListener;
206 EphyModalAlertEventListener *mModalAlertListener;
207 EphyContextMenuListener *mContextMenuListener;
208 PRBool mInitialized;
209 #ifdef HAVE_MOZILLA_PSM
210 nsCOMPtr<nsISecureBrowserUI> mSecurityInfo;
211 #endif
213 nsresult GetListener (void);
214 nsresult AttachListeners (void);
215 nsresult DetachListeners (void);
216 nsresult GetSHistory (nsISHistory **aSHistory);
217 nsresult GetContentViewer (nsIContentViewer **aViewer);
218 nsresult GetDocumentHasModifiedForms (nsIDOMDocument *aDomDoc, PRUint32 *aNumTextFields, PRBool *aHasTextArea);
219 PRBool CompareFormsText (nsAString &aDefaultText, nsAString &aUserText);
222 #endif /* !EPHY_BROWSER_H */