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)
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>
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>
45 #ifdef HAVE_MOZILLA_PSM
46 #include <nsISecureBrowserUI.h>
51 class EphyEventListener
: public nsIDOMEventListener
56 // nsIDOMEventListener
57 NS_IMETHOD
HandleEvent(nsIDOMEvent
* aEvent
) = 0;
59 EphyEventListener(EphyBrowser
*aOwner
) : mOwner(aOwner
) { };
60 virtual ~EphyEventListener() { };
66 class EphyDOMLinkEventListener
: public EphyEventListener
69 NS_IMETHOD
HandleEvent(nsIDOMEvent
* aEvent
);
71 EphyDOMLinkEventListener(EphyBrowser
*aOwner
) : EphyEventListener(aOwner
) { };
73 nsresult
GetDocURI (nsIDOMElement
*aElement
,
78 class EphyPopupBlockEventListener
: public EphyEventListener
81 NS_IMETHOD
HandleEvent(nsIDOMEvent
* aEvent
);
83 EphyPopupBlockEventListener(EphyBrowser
*aOwner
) : EphyEventListener(aOwner
) { };
86 class EphyModalAlertEventListener
: public EphyEventListener
89 NS_IMETHOD
HandleEvent(nsIDOMEvent
* aEvent
);
91 EphyModalAlertEventListener(EphyBrowser
*aOwner
) : EphyEventListener(aOwner
) { };
94 class EphyMiscDOMEventsListener
: public EphyEventListener
97 NS_IMETHOD
HandleEvent(nsIDOMEvent
* aEvent
);
99 EphyMiscDOMEventsListener(EphyBrowser
*aOwner
) : EphyEventListener(aOwner
) { };
102 class EphyDOMScrollEventListener
: public EphyEventListener
105 NS_IMETHOD
HandleEvent(nsIDOMEvent
* aEvent
);
107 EphyDOMScrollEventListener(EphyBrowser
*aOwner
) : EphyEventListener(aOwner
) { };
110 class EphyContextMenuListener
: public nsIDOMContextMenuListener
115 // nsIDOMContextMenuListener
116 NS_IMETHOD
ContextMenu(nsIDOMEvent
*aEvent
);
117 NS_IMETHOD
HandleEvent(nsIDOMEvent
*aEvent
);
119 EphyContextMenuListener(EphyBrowser
*aOwner
) : mOwner(aOwner
) { };
120 virtual ~EphyContextMenuListener() { };
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
;
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
);
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
);
188 nsresult
LoadURI(const char *aURI
,
189 PRUint32 aLoadFlags
= nsIWebNavigation::LOAD_FLAGS_NONE
,
190 nsIURI
*aURI
= nsnull
);
192 EphyEmbedDocumentType
GetDocumentType ();
194 nsCOMPtr
<nsIWebBrowser
> mWebBrowser
;
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
;
209 #ifdef HAVE_MOZILLA_PSM
210 nsCOMPtr
<nsISecureBrowserUI
> mSecurityInfo
;
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 */