gecko-dev/embedding/qa/testembed
timeless%mozdev.org 703a4eabc6 embedding/qa is not part of the build
you can tell because this file doesn't build without this change
2004-04-05 08:42:03 +00:00
..
components Bug 178643: Remove uses of NS_INIT_ISUPPORTS, since it is no longer needed. r=timeless sr=jag 2003-01-08 20:32:55 +00:00
res
BrowserFrameGlue.cpp Added VisitRequestHeaders and VisitResponseHeaders for nsiHttpChannel tests. 2003-01-24 03:56:31 +00:00
BrowserFrm.cpp Added VisitRequestHeaders and VisitResponseHeaders for nsiHttpChannel tests. 2003-01-24 03:56:31 +00:00
BrowserFrm.h Added VisitRequestHeaders and VisitResponseHeaders for nsiHttpChannel tests. 2003-01-24 03:56:31 +00:00
BrowserImpl.cpp Stronger error checking for nsIChannel and nsIHttpChannel tests. Not part of the build. 2003-02-27 01:39:35 +00:00
BrowserImpl.h
BrowserImplCtxMenuLstnr.cpp
BrowserImplHistoryLstnr.cpp
BrowserImplPrompt.cpp
BrowserImplWebPrgrsLstnr.cpp Better error checking in QaUtils and webProgLstnr methods. Not part of the build. 2002-10-26 01:49:44 +00:00
BrowserToolTip.cpp Added VisitRequestHeaders and VisitResponseHeaders for nsiHttpChannel tests. 2003-01-24 03:56:31 +00:00
BrowserToolTip.h Added VisitRequestHeaders and VisitResponseHeaders for nsiHttpChannel tests. 2003-01-24 03:56:31 +00:00
BrowserView.cpp Bug 213602: Switch some users of NS_GetWeakReference over to do_GetWeakReference. r=bzbarsky, sr=dbaron 2003-07-25 19:06:59 +00:00
BrowserView.cpp.mod Bug 213602: Switch some users of NS_GetWeakReference over to do_GetWeakReference. r=bzbarsky, sr=dbaron 2003-07-25 19:06:59 +00:00
BrowserView.h
Dialogs.cpp
Dialogs.h
DomWindow.cpp Updatind nsIDomWindow testcase 2002-11-06 18:39:36 +00:00
DomWindow.h
IBrowserFrameGlue.h Added VisitRequestHeaders and VisitResponseHeaders for nsiHttpChannel tests. 2003-01-24 03:56:31 +00:00
Makefile.in Create a new xpcom obsolete library (and component library). 2003-03-15 01:04:32 +00:00
MostRecentUrls.cpp
MostRecentUrls.h
nsichanneltests.cpp Bug 213602: Switch some users of NS_GetWeakReference over to do_GetWeakReference. r=bzbarsky, sr=dbaron 2003-07-25 19:06:59 +00:00
nsichanneltests.h Added post-AsyncOpen() tests to OnStartRequest() impl in BrowserImpl.cpp. not part of the build. 2002-12-12 02:38:49 +00:00
nsIclipboardcmd.cpp
nsIclipboardcmd.h
nsICmdParams.cpp refactored code, changes to object error checking handling. not part of the build. 2002-11-28 22:39:58 +00:00
nsICmdParams.h Hooked up command data table to nsICmdParam tests. Table to be revised at later time. not part of the build. 2002-09-21 08:06:16 +00:00
nsICommandMgr.cpp Added some more response cases for nsIHttpChannel tests. Not part of the build. 2003-01-16 06:44:49 +00:00
nsICommandMgr.h refactored code, changes to object error checking handling. not part of the build. 2002-11-28 22:39:58 +00:00
nsiDirServ.cpp Modified test results for several interface tests to display to rv dialog. 2002-09-28 01:41:25 +00:00
nsiDirServ.h
nsIEditSession.cpp refactored code, changes to object error checking handling. not part of the build. 2002-11-28 22:39:58 +00:00
nsIEditSession.h Some additional error checking for observer service. Direct rv results to screen dialog for nsIEditingSession tests. Not part of the build. 2002-11-05 04:19:33 +00:00
nsIFile.cpp minor changes to screen dialogs, "Run All Tests" for interface tests run more smoothly. 2002-10-05 04:03:32 +00:00
nsIFile.h Modified test results for several interface tests to display to rv dialog. 2002-09-28 01:41:25 +00:00
nsiHistory.cpp Fix some incorrect string usage and improve performance in a few places that show up in an LXR search for the previous pattern. b=232339 r=jshin sr=darin 2004-02-03 18:23:41 +00:00
nsiHistory.h Modified test results for several interface tests to display to rv dialog. 2002-09-28 01:41:25 +00:00
nsihttpchanneltests.cpp Stronger error checking for nsIChannel and nsIHttpChannel tests. Not part of the build. 2003-02-27 01:39:35 +00:00
nsihttpchanneltests.h Added VisitRequestHeaders and VisitResponseHeaders for nsiHttpChannel tests. 2003-01-24 03:56:31 +00:00
nsIObserServ.cpp Fix build on gcc 3.4 by removing extra semicolons (bug 218551). r/sr=dbaron, a=brendan. 2003-09-07 22:05:34 +00:00
nsIObserServ.h Modified test results for several interface tests to display to rv dialog. 2002-09-28 01:41:25 +00:00
nsirequest.cpp Bug 213602: Switch some users of NS_GetWeakReference over to do_GetWeakReference. r=bzbarsky, sr=dbaron 2003-07-25 19:06:59 +00:00
nsirequest.h
nsIWebBrow.cpp Bug 213602: Switch some users of NS_GetWeakReference over to do_GetWeakReference. r=bzbarsky, sr=dbaron 2003-07-25 19:06:59 +00:00
nsIWebBrow.h Added protocol menu to UrlDialog. Hooked up nsIWebBrowserFind to screen dialog output. 2002-10-03 02:42:09 +00:00
nsIWebBrowFind.cpp minor changes to screen dialogs, "Run All Tests" for interface tests run more smoothly. 2002-10-05 04:03:32 +00:00
nsIWebBrowFind.h Added protocol menu to UrlDialog. Hooked up nsIWebBrowserFind to screen dialog output. 2002-10-03 02:42:09 +00:00
nsIWebNav.cpp Bug 106386 Correct misspellings in source code 2003-11-17 10:05:45 +00:00
nsIWebNav.h Bug 106386 Correct misspellings in source code 2003-11-17 10:05:45 +00:00
nsIWebProg.cpp Added test cases for nsIWebProgress->GetIsDocumentLoading() and nsIWebNavigation->SetSessionHistory(). Added IsDocumentLoading tracking in web progress listeners. not part of the build. 2002-10-10 05:03:39 +00:00
nsIWebProg.h Added test cases for nsIWebProgress->GetIsDocumentLoading() and nsIWebNavigation->SetSessionHistory(). Added IsDocumentLoading tracking in web progress listeners. not part of the build. 2002-10-10 05:03:39 +00:00
nsProfile.cpp Modified test results for several interface tests to display to rv dialog. 2002-09-28 01:41:25 +00:00
nsProfile.h
Preferences.cpp
Preferences.h
PrintProgressDialog.cpp Bug 178643: Remove uses of NS_INIT_ISUPPORTS, since it is no longer needed. r=timeless sr=jag 2003-01-08 20:32:55 +00:00
PrintProgressDialog.h
ProfileMgr.cpp
ProfileMgr.h
ProfilesDlg.cpp
ProfilesDlg.h
QaFindDlg.cpp
QaFindDlg.h
QaUtils.cpp embedding/qa is not part of the build 2004-04-05 08:42:03 +00:00
QaUtils.h Added test cases for nsIWebProgress->GetIsDocumentLoading() and nsIWebNavigation->SetSessionHistory(). Added IsDocumentLoading tracking in web progress listeners. not part of the build. 2002-10-10 05:03:39 +00:00
README.TXT
resource.h Bug 106386 Correct misspellings in source code 2003-11-17 10:05:45 +00:00
Selection.cpp
Selection.h
StdAfx.cpp
StdAfx.h Adding initial test cases for nsIHttpChannel iface. Not part of the build. 2002-12-28 04:43:56 +00:00
testembed.aps Added test case for nsIWebNavigation->GetReferingURI(). not part of the build. 2003-02-04 20:01:55 +00:00
TestEmbed.cpp Fix build on gcc 3.4 by removing extra semicolons (bug 218551). r/sr=dbaron, a=brendan. 2003-09-07 22:05:34 +00:00
testembed.dsp minor changes to screen dialogs, "Run All Tests" for interface tests run more smoothly. 2002-10-05 04:03:32 +00:00
testembed.dsw *** empty log message *** 2004-03-31 00:09:37 +00:00
TestEmbed.h
testembed.htm
testembed.rc Bug 106386 Correct misspellings in source code 2003-11-17 10:05:45 +00:00
Tests.cpp Bug 106386 Correct misspellings in source code 2003-11-17 10:05:45 +00:00
Tests.h Added VisitRequestHeaders and VisitResponseHeaders for nsiHttpChannel tests. 2003-01-24 03:56:31 +00:00
UrlDialog.cpp Added protocol menu to UrlDialog. Hooked up nsIWebBrowserFind to screen dialog output. 2002-10-03 02:42:09 +00:00
UrlDialog.h Added protocol menu to UrlDialog. Hooked up nsIWebBrowserFind to screen dialog output. 2002-10-03 02:42:09 +00:00
WebProgDlg.cpp
WebProgDlg.h
winEmbedFileLocProvider.cpp Bug 178643: Remove uses of NS_INIT_ISUPPORTS, since it is no longer needed. r=timeless sr=jag 2003-01-08 20:32:55 +00:00
winEmbedFileLocProvider.h

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
 *
 * The contents of this file are subject to the Netscape Public
 * License Version 1.1 (the "License"); you may not use this file
 * except in compliance with the License. You may obtain a copy of
 * the License at http://www.mozilla.org/NPL/
 *
 * Software distributed under the License is distributed on an "AS
 * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
 * implied. See the License for the specific language governing
 * rights and limitations under the License.
 *
 * The Original Code is mozilla.org code.
 *
 * The Initial Developer of the Original Code is Netscape
 * Communications Corporation.  Portions created by Netscape are
 * Copyright (C) 1998 Netscape Communications Corporation. All
 * Rights Reserved.
 *
 * Contributor(s): 
 *   Chak Nanga <chak@netscape.com>
 *   David Epstein <depstein@netscape.com>
 */

TestEmbed is a C++ test app based upon mfcEmbed. It includes
individual test cases for Embedding interface methods. Interfaces
covered include nsIFile & nsILocalFile, nsISHistory, nsIWebNavigation,
nsIWebProgressListener, nsIClipboardCommands, nsIRequest, nsIDOMWindow,
nsIDirectoryService, nsIProfile, nsIObserverService, nsIWebBrowser,
nsIWebProgress, nsIWebBrowserFind, nsIEditingSession, nsICommandManager,
nsICommandParams, nsIStreamListener, nsIURIContentListener,
nsISHistoryListener, nsIWebBrowserChrome, and nsIEmbeddingSiteWindow.
.
Individual tests also exist for methods found in nsIGlobalHistory
and nsIProfile.

In addition to the mfcEmbed menus, it contains 5 menus: Tests,
Interfaces, Tools, Verified Bugs, and Clipboard Commands.

Executed test cases print output to a logfile called TestOutput.txt.
This will be created in the C:\temp folder.

See build instructions below.
	
General Overview:
-----------------

1. The TestEmbedApp creates BrowserFrames

2. BrowserFrame creates the toolbar, statusbar, URLbar 
   BrowserView etc.
   BrowserFrames implement the IBrowserFrameGlue interface
   using which new BrowserFrames can be created, statusbar
   updated etc. 

3. BrowserView creates the embeddable browser instance and
   manages user interaction such as URL navigation etc.
   BrowserView connects the BrowserImpl with the BrowserFrame
   via the IBrowserFrameGlue interface

4. BrowserImpl implements the set of required/optional Gecko
   embedding interfaces
   

Start by first looking at TestEmbed.cpp

Files:

StdAfx.h	 
	- Includes the required Mozilla header files

TestEmbed.cpp 
	- CWinApp derived class
	- Creates the browser's main frame window etc
	  using the CreateNewBrowserFrame() and loads
	  the HomePage
	- Makes the required NS_InitEmbedding() and the
	  NS_TermEmbedding() calls in the app's InitInstance()
	  and ExitInstance() functions
	- Keeps track of the list of new BrowserFrames created
	  which it cleans up properly in ExitInstance()

BrowserFrm.cpp 
	- This is the browser's Frame window i.e. the one with the
	  "chrome" - with the toolbar, urlbar etc.
	- Creates the toolbar, URLbar, statusbar, progressbar 
	  also the browser's view window. 

BrowserFrameGlue.cpp
	- Implements the IBrowserFrameGlue interface. This interface
	  contains platform specific implementations of functions to
	  update the statusbar, creating new browser frames etc. Embedded
	  browser's callbacks use this interface when needed

BrowserView.cpp 
	- Creates the embedded browser object and handles most aspects
	of the embedded browser interactions - like URL navigation,
	clipboard interactions etc
	- Also has code to keep the menu/toolbar/statusbar UI items up 
	to date
	- It's the view which conntects the BrowserFrame to the BrowserImpl
	  (see below) by passing it the pointer to IBrowserFrameGlue

BrowserImpl*.cpp 
	- Implements the required and/or optional embedded browser 
	interfaces
	(BrowserImpl.cpp implements the set of interfaces which 
	are required by Gecko of all embedding apps. The other
	interfaces implemented in the BrowserImpl*.cpp files are 
	optional. Included in the BrowserImpl.cpp file are interface tests for 					nsIWebBrowserChrome,nsIEmbeddingSiteWindow, nsIStreamListener, and 				nsIURIContentListener.)

	- Calls on the statusbar/progressbar update functions exposed
	via the IBrowserFrameGlue in response to the nsIWebProgressListener
	interface callbacks. nsIWebProgressListener methods are implemented
	in BrowserImplWebPrgrsLstnr.cpp. nsISHistoryListener methods are
	implemented in BrowserImplHistoryLstnr.cpp

Dialogs.cpp
	- Contains dialog box code for displaying Prompts, getting
	passwords, getting username/passwords etc
	- Contains the CFindDialog class - used for searching text
	in a web page

winEmbedFileLocProvider.cpp, ProfilesDlg.cpp, ProfileMgr.cpp
	- Profile management related code (by Conrad Carlen)

Tests.cpp
	- This is where individual test cases are stored and test interfaces are
	registered. The file is divided into three sections: 1) individual test 
	cases corresponding to the "Tests" menu. 2) tools that are helpful,
	corresponding to the "Tools" menu. These include routines like
	removing all entries from Global History. 3) Registration of
	interface tests with CTests object (bottom part of the file). Example: 

	void CTests::OnInterfacesNsidomwindow()
	{
		CDomWindow oDomWindow(qaWebBrowser) ;
		oDomWindow.OnStartTests(nCommandID);
	}

	The interface tests OnInterfacesNsidomwindow() is associated with menu
	handlers in the message map (in top part of the file). For this example,
	ON_COMMAND(ID_INTERFACES_NSIDOMWINDOW_RUNALLTESTS, OnInterfacesNsidomwindow).
	The test interface object (oDomWindow) is created with appropriate constructor.
	Then the object calls the test interface's OnStartTests() method and passes
	the selected command ID.


QAUtils.cpp
	- This contains routines that are useful to QA. Such tasks as
	printing to a logfile, displaying messages to the screen, formatting
	output data, retrieving the name of an nsI request, and getting a urI 
	are stored here.

makefile.in
	- We define "_AFXDLL" and for the compiler and specify
	"-SUBSYSTEM:windows" for the linker using LCFLAGS and 
	LLFLAGS, respectively
	- We also define "USE_SINGLE_SIGN_ON" to enable the
	single sign-on support
	- Also need REQUIRES for all modules to be included
	- Place all .cpp files for compiling in CPPSRCS section.

testembed.dsp and testembed.dsw
	- These VisualStudio workspace/project files can be used
	to open/build this sample inside of the VC++ IDE

Most interface tests have their own .cpp & .h files (e.g. nsIWebBrow.cpp).

Instructions for building:
	1) Open a dos shell.
	2) cd /mozilla/embedding/qa/testembed	   // testEmbed directory
	3) Copy the makefile.in file and call it makefile. Place in same directory.
	4) Change the top few lines in 'makefile' to indicate local pathway. Example:
		DEPTH		= ../../..
		topsrcdir	= d:/mozilla_src/mozilla
		srcdir		= d:/mozilla_src/mozilla/embedding/qa/testembed
		VPATH		= d:/mozilla_src/mozilla/embedding/qa/testembed
	5) cd components			  // components directory
	6) Copy the makefile.in file and call it makefile. Place in same directory.
	7) Change the top few lines in 'makefile' to indicate local pathway. Example:
		DEPTH		= ../../../..
		topsrcdir    = d:/mozilla_src/mozilla
		srcdir       = d:/mozilla_src/mozilla/embedding/qa/testembed/components
		VPATH        = d:/mozilla_src/mozilla/embedding/qa/testembed/components
	8) make				   	// compile 'makefile.in' in components
	9) cd ..				// return to testembed folder
	10) make				// compile 'makefile.in' in testembed
	11) cd ../../../dist/bin/	   	// navigate to the bin dir
	12) testembed.exe			// run testEmbed.exe

	note: if 'make' doesn't work above, try 'make -f makefile.in'

A few suggestions:
	1) Don't run nsIWebNavigation tests after turning on the Web
	Progress listener (from Tests menu). This will create all types
	of listener msgs in your logfile and display many msgs on the 
	screen.
	2) Best way to use web progress listener is to turn it on (from 
	the Tests menu)then change URL . Change a few more urls and
	monitor the output.
	3) Before running nsISHistory interface tests, load 1-2 urls.
	That will create a session history. The same applies for the
	nsIWebNavigation interfaces tests. One loaded url will enable
	back/forward navigation.
	4) nsIUriContentListener is registered from the "Tests" >
	"Add urIContentListener" menu. There are submenu items for different options.