Open main menu

CDOT Wiki β

Changes

Mozilla.dev.embedding

5,152 bytes added, 21:11, 30 November 2006
no edit summary
# Cesar
== Notice ==There is already an [http://developer.mozilla.org/en/docs/Mozilla_Embedding_FAQembedding Mozilla_Embedding_FAQ embedding FAQ on mozilla] that probably wasn't properly linked in with Mozilla's FAQ page. Instead, I am going to make a list of asked questions on this page and mozilla can put it into their FAQ at their discretion.
<!--[[20060929embedding| September 22, 2006 - September 29, 2009]] <br>
[http://developer.mozilla.org/en/docs/Newsgroup_summaries:mozilla-dev-embedding September 29, 2006 - October 6, 2006]
The newsgroup is more FAQ than discussion. So you can find the FAQ on [http://developer.mozilla.org/en/docs/embedding_FAQ mozilla]-->
 
== Important GtkMozEmbed 1.9 information ==
 
Timeless has become the new owner of GtkMozEmbed. You can read about some of the changes [http://groups.google.ca/group/mozilla.dev.embedding/browse_thread/thread/3c786f3d7140a6da/beebaa4f5fd822a9?hl=en#beebaa4f5fd822a9 here]
== FAQ ==
 
===How to start Embedding===
You can find a examples, FAQs, and the API from [http://www.mozilla.org/projects/embedding/ mozilla] itself. <br/>
You can get more detailed information on what interfaces are required and which are optional to impelement [http://developer.mozilla.org/en/docs/Gecko_Embedding_Basics here]. Scroll down to "Initalization and Teardown.
 
===How to customize document retrieval===
One method is to implement your own protocol method. You can find more information on adding new protocols [http://kb.mozillazine.org/Dev_:_Protocol_Handlers here]
 
===How to embedding mozilla inside of Java===
There hasn't been any good code examples found. However, there is a stripped down, uncommented code with eclipse libraries in [http://groups.google.com/group/mozilla.dev.embedding/browse_thread/thread/46c259db088ee584/76f2073388eaffdd#76f2073388eaffdd this] thread. Here is the code :
<pre>
import org.eclipse.swt.SWT;
import org.eclipse.swt.browser.MozillaBrowser;
import org.eclipse.swt.browser.ProgressEvent;
import org.eclipse.swt.browser.ProgressListener;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.mozilla.xpcom.nsIDOMDocument;
 
public class Test {
public static void main(String args[]) {
Display display = new Display();
Shell shell = new Shell(display);
 
final MozillaBrowser browser = new MozillaBrowser(shell,WT.BORDER);
browser.setUrl("http://www.google.com");
browser.addProgressListener(new ProgressListener() {
public void changed(ProgressEvent event) {
}
 
public void completed(ProgressEvent event) {
nsIDOMDocument doc = browser.getDocument();
System.out.println(doc);
}
});
 
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
}
</pre>
 
===How to map a Javascript function to a C++ function===
Define an XPCOM class defining the function you'll be doing in javascript. Then pass the object to your XPCOM coded object and call it from C++. You can find a better quality answer repeated and with an example in [http://groups.google.com/group/mozilla.dev.embedding/browse_thread/thread/af33a04e00387f5d/34d897200d736061#34d897200d736061 this newsgroup thread].
 
===nsIPromptService with secure sites===
The problem is getting "Security Error: Domain Name Mismatch" when visting certain secure sites. You get no text and no functionality. There are two possible solutions to this error.
stack->Pop(&cx);
}</code>
 
=== How to control what is, and what is not, loaded ===
Some people have complained that nsIURIContentListener::OnStartURIOpen() is not called for logos (images) and CSS. This is because you must use [http://developer.mozilla.org/en/docs/index.php?title=Creating_XPCOM_Components:Finishing_the_Component&redirect=no#Implementing_the_nsIContentPolicy nsIContentPolicy].
 
=== What is winEmbed? ===
It is the window class associated with the mozilla custom control.
 
=== How can I use the new nsIWindowProvider in Mozilla 1.8.1? ===
If you have SetWebBrowserChrome on the tree owner, just implement the nsIInterfaceRequestor on that object and call the GetInterface implementation, which returns an nsIwindowsProvider.
 
[http://lxr.mozilla.org/mozilla/source/camino/src/embedding/CHBrowserListener.mm This] was marked as a good example, but no line number was given.
 
=== How do I save HTML as an image ===
There is a test application that allows you to take a snapshot of rendered HTML and save it as an image. The program and code is available [http://ubrowser.com/testapps.php here]
 
=== Why does TestGTKEmbed give an error message when I download something and 'save as/ open with' pops up? ===
You have to implement your own download UI as gtkmozembed doesn't have one. Alternatively, you can download files using nsIWebBrowserPersist if UI isn't a concern.
 
=== How to rebuild tests in only part of the Mozilla Suite ===
Go into the folder where the tests are found and issue make. If you built mozilla with an object directory, you must change into that directory into there first.
 
=== How do I render strings provided by the user? ===
use the nsIWebBrowserStream. You can get it by a do_QueryInterface() on the nsIWebBrowser you use. Look at the file [http://lxr.mozilla.org/mozilla1.8.0/source/embedding/browser/gtk/src/EmbedPrivate.cpp embedding/browser/gtk/src/EmbedPrivate.cpp] and the methods OpenStream(), AppendToStream(), and CloseStream() to get sample implementations
 
=== Is there any support for the Firefox XPI extensions in gtkmozembed? ===
No. It is not planned for the future.
 
=== Why does mfcembed crash when accessing secure sites? ===
There may be multiple solutions to this problem. One possible solution is that you tried to use nss without probing it first to initialize itself.
1
edit