Relocated ActiveX control test source
git-svn-id: svn://10.0.0.236/trunk@63502 18797224-902f-48f8-a5cc-f745e15eee43
@@ -0,0 +1,86 @@
|
||||
// DlgProxy.cpp : implementation file
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "IEPatcher.h"
|
||||
#include "DlgProxy.h"
|
||||
#include "IEPatcherDlg.h"
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define new DEBUG_NEW
|
||||
#undef THIS_FILE
|
||||
static char THIS_FILE[] = __FILE__;
|
||||
#endif
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CIEPatcherDlgAutoProxy
|
||||
|
||||
IMPLEMENT_DYNCREATE(CIEPatcherDlgAutoProxy, CCmdTarget)
|
||||
|
||||
CIEPatcherDlgAutoProxy::CIEPatcherDlgAutoProxy()
|
||||
{
|
||||
EnableAutomation();
|
||||
|
||||
// To keep the application running as long as an OLE automation
|
||||
// object is active, the constructor calls AfxOleLockApp.
|
||||
AfxOleLockApp();
|
||||
|
||||
// Get access to the dialog through the application's
|
||||
// main window pointer. Set the proxy's internal pointer
|
||||
// to point to the dialog, and set the dialog's back pointer to
|
||||
// this proxy.
|
||||
ASSERT (AfxGetApp()->m_pMainWnd != NULL);
|
||||
ASSERT_VALID (AfxGetApp()->m_pMainWnd);
|
||||
ASSERT_KINDOF(CIEPatcherDlg, AfxGetApp()->m_pMainWnd);
|
||||
m_pDialog = (CIEPatcherDlg*) AfxGetApp()->m_pMainWnd;
|
||||
m_pDialog->m_pAutoProxy = this;
|
||||
}
|
||||
|
||||
CIEPatcherDlgAutoProxy::~CIEPatcherDlgAutoProxy()
|
||||
{
|
||||
// To terminate the application when all objects created with
|
||||
// with OLE automation, the destructor calls AfxOleUnlockApp.
|
||||
// Among other things, this will destroy the main dialog
|
||||
AfxOleUnlockApp();
|
||||
}
|
||||
|
||||
void CIEPatcherDlgAutoProxy::OnFinalRelease()
|
||||
{
|
||||
// When the last reference for an automation object is released
|
||||
// OnFinalRelease is called. The base class will automatically
|
||||
// deletes the object. Add additional cleanup required for your
|
||||
// object before calling the base class.
|
||||
|
||||
CCmdTarget::OnFinalRelease();
|
||||
}
|
||||
|
||||
BEGIN_MESSAGE_MAP(CIEPatcherDlgAutoProxy, CCmdTarget)
|
||||
//{{AFX_MSG_MAP(CIEPatcherDlgAutoProxy)
|
||||
// NOTE - the ClassWizard will add and remove mapping macros here.
|
||||
//}}AFX_MSG_MAP
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
BEGIN_DISPATCH_MAP(CIEPatcherDlgAutoProxy, CCmdTarget)
|
||||
//{{AFX_DISPATCH_MAP(CIEPatcherDlgAutoProxy)
|
||||
// NOTE - the ClassWizard will add and remove mapping macros here.
|
||||
//}}AFX_DISPATCH_MAP
|
||||
END_DISPATCH_MAP()
|
||||
|
||||
// Note: we add support for IID_IIEPatcher to support typesafe binding
|
||||
// from VBA. This IID must match the GUID that is attached to the
|
||||
// dispinterface in the .ODL file.
|
||||
|
||||
// {A6031677-3B36-11D2-B44D-00600819607E}
|
||||
static const IID IID_IIEPatcher =
|
||||
{ 0xa6031677, 0x3b36, 0x11d2, { 0xb4, 0x4d, 0x0, 0x60, 0x8, 0x19, 0x60, 0x7e } };
|
||||
|
||||
BEGIN_INTERFACE_MAP(CIEPatcherDlgAutoProxy, CCmdTarget)
|
||||
INTERFACE_PART(CIEPatcherDlgAutoProxy, IID_IIEPatcher, Dispatch)
|
||||
END_INTERFACE_MAP()
|
||||
|
||||
// The IMPLEMENT_OLECREATE2 macro is defined in StdAfx.h of this project
|
||||
// {A6031675-3B36-11D2-B44D-00600819607E}
|
||||
IMPLEMENT_OLECREATE2(CIEPatcherDlgAutoProxy, "IEPatcher.Application", 0xa6031675, 0x3b36, 0x11d2, 0xb4, 0x4d, 0x0, 0x60, 0x8, 0x19, 0x60, 0x7e)
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CIEPatcherDlgAutoProxy message handlers
|
||||
61
mozilla/embedding/browser/activex/tests/IEPatcher/DlgProxy.h
Normal file
@@ -0,0 +1,61 @@
|
||||
// DlgProxy.h : header file
|
||||
//
|
||||
|
||||
#if !defined(AFX_DLGPROXY_H__A603167E_3B36_11D2_B44D_00600819607E__INCLUDED_)
|
||||
#define AFX_DLGPROXY_H__A603167E_3B36_11D2_B44D_00600819607E__INCLUDED_
|
||||
|
||||
#if _MSC_VER >= 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER >= 1000
|
||||
|
||||
class CIEPatcherDlg;
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CIEPatcherDlgAutoProxy command target
|
||||
|
||||
class CIEPatcherDlgAutoProxy : public CCmdTarget
|
||||
{
|
||||
DECLARE_DYNCREATE(CIEPatcherDlgAutoProxy)
|
||||
|
||||
CIEPatcherDlgAutoProxy(); // protected constructor used by dynamic creation
|
||||
|
||||
// Attributes
|
||||
public:
|
||||
CIEPatcherDlg* m_pDialog;
|
||||
|
||||
// Operations
|
||||
public:
|
||||
|
||||
// Overrides
|
||||
// ClassWizard generated virtual function overrides
|
||||
//{{AFX_VIRTUAL(CIEPatcherDlgAutoProxy)
|
||||
public:
|
||||
virtual void OnFinalRelease();
|
||||
//}}AFX_VIRTUAL
|
||||
|
||||
// Implementation
|
||||
protected:
|
||||
virtual ~CIEPatcherDlgAutoProxy();
|
||||
|
||||
// Generated message map functions
|
||||
//{{AFX_MSG(CIEPatcherDlgAutoProxy)
|
||||
// NOTE - the ClassWizard will add and remove member functions here.
|
||||
//}}AFX_MSG
|
||||
|
||||
DECLARE_MESSAGE_MAP()
|
||||
DECLARE_OLECREATE(CIEPatcherDlgAutoProxy)
|
||||
|
||||
// Generated OLE dispatch map functions
|
||||
//{{AFX_DISPATCH(CIEPatcherDlgAutoProxy)
|
||||
// NOTE - the ClassWizard will add and remove member functions here.
|
||||
//}}AFX_DISPATCH
|
||||
DECLARE_DISPATCH_MAP()
|
||||
DECLARE_INTERFACE_MAP()
|
||||
};
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
//{{AFX_INSERT_LOCATION}}
|
||||
// Microsoft Developer Studio will insert additional declarations immediately before the previous line.
|
||||
|
||||
#endif // !defined(AFX_DLGPROXY_H__A603167E_3B36_11D2_B44D_00600819607E__INCLUDED_)
|
||||
@@ -0,0 +1,93 @@
|
||||
// IEPatcher.cpp : Defines the class behaviors for the application.
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "IEPatcher.h"
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define new DEBUG_NEW
|
||||
#undef THIS_FILE
|
||||
static char THIS_FILE[] = __FILE__;
|
||||
#endif
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CIEPatcherApp
|
||||
|
||||
BEGIN_MESSAGE_MAP(CIEPatcherApp, CWinApp)
|
||||
//{{AFX_MSG_MAP(CIEPatcherApp)
|
||||
// NOTE - the ClassWizard will add and remove mapping macros here.
|
||||
// DO NOT EDIT what you see in these blocks of generated code!
|
||||
//}}AFX_MSG
|
||||
ON_COMMAND(ID_HELP, CWinApp::OnHelp)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CIEPatcherApp construction
|
||||
|
||||
CIEPatcherApp::CIEPatcherApp()
|
||||
{
|
||||
m_pIEPatcherDlg = NULL;
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// The one and only CIEPatcherApp object
|
||||
|
||||
CIEPatcherApp theApp;
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CIEPatcherApp initialization
|
||||
|
||||
BOOL CIEPatcherApp::InitInstance()
|
||||
{
|
||||
// Initialize OLE libraries
|
||||
if (!AfxOleInit())
|
||||
{
|
||||
AfxMessageBox(IDP_OLE_INIT_FAILED);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
// Standard initialization
|
||||
// If you are not using these features and wish to reduce the size
|
||||
// of your final executable, you should remove from the following
|
||||
// the specific initialization routines you do not need.
|
||||
|
||||
#ifdef _AFXDLL
|
||||
Enable3dControls(); // Call this when using MFC in a shared DLL
|
||||
#else
|
||||
Enable3dControlsStatic(); // Call this when linking to MFC statically
|
||||
#endif
|
||||
|
||||
// Parse the command line to see if launched as OLE server
|
||||
if (RunEmbedded() || RunAutomated())
|
||||
{
|
||||
// Register all OLE server (factories) as running. This enables the
|
||||
// OLE libraries to create objects from other applications.
|
||||
COleTemplateServer::RegisterAll();
|
||||
}
|
||||
else
|
||||
{
|
||||
// When a server application is launched stand-alone, it is a good idea
|
||||
// to update the system registry in case it has been damaged.
|
||||
COleObjectFactory::UpdateRegistryAll();
|
||||
}
|
||||
|
||||
// Now the scanner window
|
||||
m_pIEPatcherDlg = new CIEPatcherDlg;
|
||||
m_pMainWnd = m_pIEPatcherDlg;
|
||||
int nResponse = m_pIEPatcherDlg->DoModal();
|
||||
if (nResponse == IDOK)
|
||||
{
|
||||
// TODO: Place code here to handle when the dialog is
|
||||
// dismissed with OK
|
||||
}
|
||||
else if (nResponse == IDCANCEL)
|
||||
{
|
||||
// TODO: Place code here to handle when the dialog is
|
||||
// dismissed with Cancel
|
||||
}
|
||||
delete m_pIEPatcherDlg;
|
||||
|
||||
// Since the dialog has been closed, return FALSE so that we exit the
|
||||
// application, rather than start the application's message pump.
|
||||
return FALSE;
|
||||
}
|
||||
203
mozilla/embedding/browser/activex/tests/IEPatcher/IEPatcher.dsp
Normal file
@@ -0,0 +1,203 @@
|
||||
# Microsoft Developer Studio Project File - Name="IEPatcher" - Package Owner=<4>
|
||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||
# ** DO NOT EDIT **
|
||||
|
||||
# TARGTYPE "Win32 (x86) Application" 0x0101
|
||||
|
||||
CFG=IEPatcher - Win32 Debug
|
||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||
!MESSAGE use the Export Makefile command and run
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "IEPatcher.mak".
|
||||
!MESSAGE
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "IEPatcher.mak" CFG="IEPatcher - Win32 Debug"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "IEPatcher - Win32 Release" (based on "Win32 (x86) Application")
|
||||
!MESSAGE "IEPatcher - Win32 Debug" (based on "Win32 (x86) Application")
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
# PROP AllowPerConfigDependencies 0
|
||||
# PROP Scc_ProjName ""
|
||||
# PROP Scc_LocalPath ""
|
||||
CPP=cl.exe
|
||||
MTL=midl.exe
|
||||
RSC=rc.exe
|
||||
|
||||
!IF "$(CFG)" == "IEPatcher - Win32 Release"
|
||||
|
||||
# PROP BASE Use_MFC 6
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "Release"
|
||||
# PROP BASE Intermediate_Dir "Release"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 5
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "Release"
|
||||
# PROP Intermediate_Dir "Release"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /Yu"stdafx.h" /FD /c
|
||||
# ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /Yu"stdafx.h" /FD /c
|
||||
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
|
||||
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
|
||||
# ADD BASE RSC /l 0x1809 /d "NDEBUG" /d "_AFXDLL"
|
||||
# ADD RSC /l 0x1809 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 /nologo /subsystem:windows /machine:I386
|
||||
# ADD LINK32 /nologo /subsystem:windows /machine:I386
|
||||
|
||||
!ELSEIF "$(CFG)" == "IEPatcher - Win32 Debug"
|
||||
|
||||
# PROP BASE Use_MFC 6
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "Debug"
|
||||
# PROP BASE Intermediate_Dir "Debug"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 5
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "Debug"
|
||||
# PROP Intermediate_Dir "Debug"
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /Yu"stdafx.h" /FD /c
|
||||
# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /Yu"stdafx.h" /FD /c
|
||||
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
|
||||
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
|
||||
# ADD BASE RSC /l 0x1809 /d "_DEBUG" /d "_AFXDLL"
|
||||
# ADD RSC /l 0x1809 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
||||
# Name "IEPatcher - Win32 Release"
|
||||
# Name "IEPatcher - Win32 Debug"
|
||||
# Begin Group "Source Files"
|
||||
|
||||
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\DlgProxy.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\IEPatcher.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\IEPatcher.odl
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\IEPatcher.rc
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\IEPatcherDlg.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\ScanForFilesDlg.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\ScannerThread.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\ScannerWnd.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\StdAfx.cpp
|
||||
# ADD CPP /Yc"stdafx.h"
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Header Files"
|
||||
|
||||
# PROP Default_Filter "h;hpp;hxx;hm;inl"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\DlgProxy.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\IEPatcher.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\IEPatcherDlg.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Resource.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\ScanForFilesDlg.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\ScannerThread.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\ScannerWnd.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\StdAfx.h
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Resource Files"
|
||||
|
||||
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\containsie.ico
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\containsmozilla.ico
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\doesntcontainie.ico
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\IEPatcher.ico
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\IEPatcher.rc2
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\unknownstatus.ico
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\IEPatcher.reg
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\ReadMe.txt
|
||||
# End Source File
|
||||
# End Target
|
||||
# End Project
|
||||
@@ -0,0 +1,53 @@
|
||||
// IEPatcher.h : main header file for the IEPATCHER application
|
||||
//
|
||||
|
||||
#if !defined(AFX_IEPATCHER_H__A603167A_3B36_11D2_B44D_00600819607E__INCLUDED_)
|
||||
#define AFX_IEPATCHER_H__A603167A_3B36_11D2_B44D_00600819607E__INCLUDED_
|
||||
|
||||
#if _MSC_VER >= 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER >= 1000
|
||||
|
||||
#ifndef __AFXWIN_H__
|
||||
#error include 'stdafx.h' before including this file for PCH
|
||||
#endif
|
||||
|
||||
#include "resource.h" // main symbols
|
||||
|
||||
#include "IEPatcherDlg.h"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CIEPatcherApp:
|
||||
// See IEPatcher.cpp for the implementation of this class
|
||||
//
|
||||
|
||||
class CIEPatcherApp : public CWinApp
|
||||
{
|
||||
public:
|
||||
CIEPatcherApp();
|
||||
|
||||
CIEPatcherDlg *m_pIEPatcherDlg;
|
||||
|
||||
// Overrides
|
||||
// ClassWizard generated virtual function overrides
|
||||
//{{AFX_VIRTUAL(CIEPatcherApp)
|
||||
public:
|
||||
virtual BOOL InitInstance();
|
||||
//}}AFX_VIRTUAL
|
||||
|
||||
// Implementation
|
||||
|
||||
//{{AFX_MSG(CIEPatcherApp)
|
||||
// NOTE - the ClassWizard will add and remove member functions here.
|
||||
// DO NOT EDIT what you see in these blocks of generated code !
|
||||
//}}AFX_MSG
|
||||
DECLARE_MESSAGE_MAP()
|
||||
};
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
//{{AFX_INSERT_LOCATION}}
|
||||
// Microsoft Developer Studio will insert additional declarations immediately before the previous line.
|
||||
|
||||
#endif // !defined(AFX_IEPATCHER_H__A603167A_3B36_11D2_B44D_00600819607E__INCLUDED_)
|
||||
@@ -0,0 +1,41 @@
|
||||
// IEPatcher.odl : type library source for IEPatcher.exe
|
||||
|
||||
// This file will be processed by the MIDL compiler to produce the
|
||||
// type library (IEPatcher.tlb).
|
||||
|
||||
[ uuid(A6031676-3B36-11D2-B44D-00600819607E), version(1.0) ]
|
||||
library IEPatcher
|
||||
{
|
||||
importlib("stdole32.tlb");
|
||||
|
||||
|
||||
// Primary dispatch interface for CIEPatcherDoc
|
||||
|
||||
[ uuid(A6031677-3B36-11D2-B44D-00600819607E) ]
|
||||
dispinterface IIEPatcher
|
||||
{
|
||||
properties:
|
||||
// NOTE - ClassWizard will maintain property information here.
|
||||
// Use extreme caution when editing this section.
|
||||
//{{AFX_ODL_PROP(CIEPatcherDlgAutoProxy)
|
||||
//}}AFX_ODL_PROP
|
||||
|
||||
methods:
|
||||
// NOTE - ClassWizard will maintain method information here.
|
||||
// Use extreme caution when editing this section.
|
||||
//{{AFX_ODL_METHOD(CIEPatcherDlgAutoProxy)
|
||||
//}}AFX_ODL_METHOD
|
||||
|
||||
};
|
||||
|
||||
// Class information for CIEPatcherDoc
|
||||
|
||||
[ uuid(A6031675-3B36-11D2-B44D-00600819607E) ]
|
||||
coclass IEPatcher
|
||||
{
|
||||
[default] dispinterface IIEPatcher;
|
||||
};
|
||||
|
||||
//{{AFX_APPEND_ODL}}
|
||||
//}}AFX_APPEND_ODL}}
|
||||
};
|
||||
236
mozilla/embedding/browser/activex/tests/IEPatcher/IEPatcher.rc
Normal file
@@ -0,0 +1,236 @@
|
||||
//Microsoft Developer Studio generated resource script.
|
||||
//
|
||||
#include "resource.h"
|
||||
|
||||
#define APSTUDIO_READONLY_SYMBOLS
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Generated from the TEXTINCLUDE 2 resource.
|
||||
//
|
||||
#include "afxres.h"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#undef APSTUDIO_READONLY_SYMBOLS
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// English (U.S.) resources
|
||||
|
||||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
|
||||
#ifdef _WIN32
|
||||
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||
#pragma code_page(1252)
|
||||
#endif //_WIN32
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Dialog
|
||||
//
|
||||
|
||||
IDD_IEPATCHER_DIALOG DIALOGEX 0, 0, 323, 202
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
EXSTYLE WS_EX_APPWINDOW
|
||||
CAPTION "IE to Mozilla Patcher"
|
||||
FONT 8, "MS Sans Serif"
|
||||
BEGIN
|
||||
PUSHBUTTON "&Scan...",IDC_SCAN,266,6,50,14
|
||||
CONTROL "List1",IDC_FILELIST,"SysListView32",LVS_REPORT |
|
||||
LVS_SHOWSELALWAYS | LVS_SORTASCENDING | WS_BORDER |
|
||||
WS_TABSTOP,7,59,309,136
|
||||
PUSHBUTTON "&Patch",IDC_PATCH,266,26,50,14
|
||||
LTEXT "Add files to the source list by selecting ""Scan"". Files containing references to Internet Explorer or Mozilla will be highlighted.",
|
||||
IDC_STATIC,7,6,257,18
|
||||
LTEXT "Choose ""Patch"" to apply the Mozilla patch to any selected files. The patching process does not overwrite the original file but creates a new file prepended with ""moz_"" which you may test at your leisure.",
|
||||
IDC_STATIC,7,30,257,26
|
||||
END
|
||||
|
||||
IDD_SCANFORFILES DIALOG DISCARDABLE 0, 0, 227, 63
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Scan for files"
|
||||
FONT 8, "MS Sans Serif"
|
||||
BEGIN
|
||||
LTEXT "Type a filename or wildcard pattern or use ""Pick File..."" or ""Pick Folder...""",
|
||||
IDC_STATIC,7,7,155,18
|
||||
EDITTEXT IDC_FILEPATTERN,5,25,158,13,ES_AUTOHSCROLL
|
||||
PUSHBUTTON "Pick File...",IDC_SELECTFILE,29,43,55,13
|
||||
DEFPUSHBUTTON "OK",IDOK,170,5,50,14
|
||||
PUSHBUTTON "Cancel",IDCANCEL,170,25,50,14
|
||||
PUSHBUTTON "Pick Folder...",IDC_SELECTFOLDER,89,43,55,13
|
||||
END
|
||||
|
||||
|
||||
#ifndef _MAC
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Version
|
||||
//
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 1,0,0,1
|
||||
PRODUCTVERSION 1,0,0,1
|
||||
FILEFLAGSMASK 0x3fL
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS 0x1L
|
||||
#else
|
||||
FILEFLAGS 0x0L
|
||||
#endif
|
||||
FILEOS 0x4L
|
||||
FILETYPE 0x1L
|
||||
FILESUBTYPE 0x0L
|
||||
BEGIN
|
||||
BLOCK "StringFileInfo"
|
||||
BEGIN
|
||||
BLOCK "040904B0"
|
||||
BEGIN
|
||||
VALUE "CompanyName", "\0"
|
||||
VALUE "FileDescription", "IEPatcher MFC Application\0"
|
||||
VALUE "FileVersion", "1, 0, 0, 1\0"
|
||||
VALUE "InternalName", "IEPatcher\0"
|
||||
VALUE "LegalCopyright", "Copyright (C) 1998\0"
|
||||
VALUE "LegalTrademarks", "\0"
|
||||
VALUE "OriginalFilename", "IEPatcher.EXE\0"
|
||||
VALUE "ProductName", "IEPatcher Application\0"
|
||||
VALUE "ProductVersion", "1, 0, 0, 1\0"
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
BEGIN
|
||||
VALUE "Translation", 0x409, 1200
|
||||
END
|
||||
END
|
||||
|
||||
#endif // !_MAC
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// DESIGNINFO
|
||||
//
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
GUIDELINES DESIGNINFO DISCARDABLE
|
||||
BEGIN
|
||||
IDD_IEPATCHER_DIALOG, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 316
|
||||
TOPMARGIN, 6
|
||||
BOTTOMMARGIN, 195
|
||||
END
|
||||
|
||||
IDD_SCANFORFILES, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 220
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 56
|
||||
END
|
||||
END
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Icon
|
||||
//
|
||||
|
||||
// Icon with lowest ID value placed first to ensure application icon
|
||||
// remains consistent on all systems.
|
||||
IDI_CONTAINSIE ICON DISCARDABLE "res\\containsie.ico"
|
||||
IDI_DOESNTCONTAINIE ICON DISCARDABLE "res\\doesntcontainie.ico"
|
||||
IDI_CONTAINSMOZILLA ICON DISCARDABLE "res\\containsmozilla.ico"
|
||||
IDI_UNKNOWNSTATUS ICON DISCARDABLE "res\\unknownstatus.ico"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// String Table
|
||||
//
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
IDP_OLE_INIT_FAILED "OLE initialization failed. Make sure that the OLE libraries are the correct version."
|
||||
END
|
||||
|
||||
#endif // English (U.S.) resources
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// English (Ireland) resources
|
||||
|
||||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENI)
|
||||
#ifdef _WIN32
|
||||
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_EIRE
|
||||
#pragma code_page(1252)
|
||||
#endif //_WIN32
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// TEXTINCLUDE
|
||||
//
|
||||
|
||||
1 TEXTINCLUDE DISCARDABLE
|
||||
BEGIN
|
||||
"resource.h\0"
|
||||
END
|
||||
|
||||
2 TEXTINCLUDE DISCARDABLE
|
||||
BEGIN
|
||||
"#include ""afxres.h""\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
3 TEXTINCLUDE DISCARDABLE
|
||||
BEGIN
|
||||
"#define _AFX_NO_SPLITTER_RESOURCES\r\n"
|
||||
"#define _AFX_NO_OLE_RESOURCES\r\n"
|
||||
"#define _AFX_NO_TRACKER_RESOURCES\r\n"
|
||||
"#define _AFX_NO_PROPERTY_RESOURCES\r\n"
|
||||
"\r\n"
|
||||
"#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r\n"
|
||||
"#ifdef _WIN32\r\n"
|
||||
"LANGUAGE 9, 1\r\n"
|
||||
"#pragma code_page(1252)\r\n"
|
||||
"#endif\r\n"
|
||||
"#include ""res\\IEPatcher.rc2"" // non-Microsoft Visual C++ edited resources\r\n"
|
||||
"#include ""afxres.rc"" // Standard components\r\n"
|
||||
"#endif\0"
|
||||
END
|
||||
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Icon
|
||||
//
|
||||
|
||||
// Icon with lowest ID value placed first to ensure application icon
|
||||
// remains consistent on all systems.
|
||||
IDR_MAINFRAME ICON DISCARDABLE "res\\IEPatcher.ico"
|
||||
#endif // English (Ireland) resources
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
|
||||
#ifndef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Generated from the TEXTINCLUDE 3 resource.
|
||||
//
|
||||
#define _AFX_NO_SPLITTER_RESOURCES
|
||||
#define _AFX_NO_OLE_RESOURCES
|
||||
#define _AFX_NO_TRACKER_RESOURCES
|
||||
#define _AFX_NO_PROPERTY_RESOURCES
|
||||
|
||||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
|
||||
#ifdef _WIN32
|
||||
LANGUAGE 9, 1
|
||||
#pragma code_page(1252)
|
||||
#endif
|
||||
#include "res\IEPatcher.rc2" // non-Microsoft Visual C++ edited resources
|
||||
#include "afxres.rc" // Standard components
|
||||
#endif
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#endif // not APSTUDIO_INVOKED
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
REGEDIT
|
||||
; This .REG file may be used by your SETUP program.
|
||||
; If a SETUP program is not available, the entries below will be
|
||||
; registered in your InitInstance automatically with a call to
|
||||
; CWinApp::RegisterShellFileTypes and COleObjectFactory::UpdateRegistryAll.
|
||||
|
||||
|
||||
HKEY_CLASSES_ROOT\IEPatcher.Application = IEPatcher Application
|
||||
HKEY_CLASSES_ROOT\IEPatcher.Application\CLSID = {A6031675-3B36-11D2-B44D-00600819607E}
|
||||
|
||||
HKEY_CLASSES_ROOT\CLSID\{A6031675-3B36-11D2-B44D-00600819607E} = IEPatcher Application
|
||||
HKEY_CLASSES_ROOT\CLSID\{A6031675-3B36-11D2-B44D-00600819607E}\ProgId = IEPatcher.Application
|
||||
HKEY_CLASSES_ROOT\CLSID\{A6031675-3B36-11D2-B44D-00600819607E}\LocalServer32 = IEPATCHER.EXE
|
||||
@@ -0,0 +1,622 @@
|
||||
// IEPatcherDlg.cpp : implementation file
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "IEPatcher.h"
|
||||
#include "IEPatcherDlg.h"
|
||||
#include "ScanForFilesDlg.h"
|
||||
#include "ScannerThread.h"
|
||||
#include "DlgProxy.h"
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define new DEBUG_NEW
|
||||
#undef THIS_FILE
|
||||
static char THIS_FILE[] = __FILE__;
|
||||
#endif
|
||||
|
||||
const CLSID CLSID_WebBrowser_V1 = { 0xEAB22AC3, 0x30C1, 0x11CF, { 0xA7, 0xEB, 0x00, 0x00, 0xC0, 0x5B, 0xAE, 0x0B } };
|
||||
const CLSID CLSID_WebBrowser = { 0x8856F961, 0x340A, 0x11D0, { 0xA9, 0x6B, 0x00, 0xC0, 0x4F, 0xD7, 0x05, 0xA2 } };
|
||||
const CLSID CLSID_InternetExplorer = { 0x0002DF01, 0x0000, 0x0000, { 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46 } };
|
||||
const CLSID CLSID_MozillaBrowser = {0x1339B54C,0x3453,0x11D2,{0x93,0xB9,0x00,0x00,0x00,0x00,0x00,0x00}};
|
||||
const IID IID_IWebBrowser = { 0xEAB22AC1, 0x30C1, 0x11CF, { 0xA7, 0xEB, 0x00, 0x00, 0xC0, 0x5B, 0xAE, 0x0B } };
|
||||
const IID IID_IWebBrowser2 = { 0xD30C1661, 0xCDAF, 0x11d0, { 0x8A, 0x3E, 0x00, 0xC0, 0x4F, 0xC9, 0xE2, 0x6E } };
|
||||
const IID IID_IWebBrowserApp = { 0x0002DF05, 0x0000, 0x0000, { 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46 } };
|
||||
|
||||
|
||||
#define ITEM_PATCHSTATUS 1
|
||||
|
||||
#define IMG_DOESNTCONTAINIE 0
|
||||
#define IMG_CONTAINSIE 1
|
||||
#define IMG_CONTAINSMOZILLA 2
|
||||
#define IMG_UNKNOWNSTATUS 3
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CIEPatcherDlg dialog
|
||||
|
||||
IMPLEMENT_DYNAMIC(CIEPatcherDlg, CDialog);
|
||||
|
||||
CIEPatcherDlg::CIEPatcherDlg(CWnd* pParent /*=NULL*/)
|
||||
: CDialog(CIEPatcherDlg::IDD, pParent)
|
||||
{
|
||||
//{{AFX_DATA_INIT(CIEPatcherDlg)
|
||||
//}}AFX_DATA_INIT
|
||||
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
|
||||
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
|
||||
m_pAutoProxy = NULL;
|
||||
}
|
||||
|
||||
|
||||
CIEPatcherDlg::~CIEPatcherDlg()
|
||||
{
|
||||
// If there is an automation proxy for this dialog, set
|
||||
// its back pointer to this dialog to NULL, so it knows
|
||||
// the dialog has been deleted.
|
||||
if (m_pAutoProxy != NULL)
|
||||
m_pAutoProxy->m_pDialog = NULL;
|
||||
}
|
||||
|
||||
|
||||
void CIEPatcherDlg::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
//{{AFX_DATA_MAP(CIEPatcherDlg)
|
||||
DDX_Control(pDX, IDC_PATCH, m_btnPatch);
|
||||
DDX_Control(pDX, IDC_FILELIST, m_cFileList);
|
||||
//}}AFX_DATA_MAP
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CIEPatcherDlg, CDialog)
|
||||
//{{AFX_MSG_MAP(CIEPatcherDlg)
|
||||
ON_WM_PAINT()
|
||||
ON_WM_QUERYDRAGICON()
|
||||
ON_WM_CLOSE()
|
||||
ON_BN_CLICKED(IDC_SCAN, OnScan)
|
||||
ON_NOTIFY(NM_CLICK, IDC_FILELIST, OnClickFilelist)
|
||||
ON_BN_CLICKED(IDC_PATCH, OnPatch)
|
||||
//}}AFX_MSG_MAP
|
||||
ON_MESSAGE(WM_UPDATEFILESTATUS, OnUpdateFileStatus)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CIEPatcherDlg message handlers
|
||||
|
||||
BOOL CIEPatcherDlg::OnInitDialog()
|
||||
{
|
||||
CDialog::OnInitDialog();
|
||||
|
||||
// Start the scanner thread
|
||||
AfxBeginThread(RUNTIME_CLASS(CScannerThread), 0);
|
||||
|
||||
// Set the icon for this dialog. The framework does this automatically
|
||||
// when the application's main window is not a dialog
|
||||
SetIcon(m_hIcon, TRUE); // Set big icon
|
||||
SetIcon(m_hIcon, FALSE); // Set small icon
|
||||
|
||||
// Add icons to image list
|
||||
m_cImageList.Create(16, 16, ILC_MASK, 0, 5);
|
||||
m_cImageList.Add(AfxGetApp()->LoadIcon(IDI_DOESNTCONTAINIE));
|
||||
m_cImageList.Add(AfxGetApp()->LoadIcon(IDI_CONTAINSIE));
|
||||
m_cImageList.Add(AfxGetApp()->LoadIcon(IDI_CONTAINSMOZILLA));
|
||||
m_cImageList.Add(AfxGetApp()->LoadIcon(IDI_UNKNOWNSTATUS));
|
||||
|
||||
// Associate image list with file list
|
||||
m_cFileList.SetImageList(&m_cImageList, LVSIL_SMALL);
|
||||
|
||||
struct ColumnData
|
||||
{
|
||||
TCHAR *sColumnTitle;
|
||||
int nPercentageWidth;
|
||||
int nFormat;
|
||||
};
|
||||
|
||||
ColumnData aColData[] =
|
||||
{
|
||||
{ _T("File"), 70, LVCFMT_LEFT },
|
||||
{ _T("Patch Status"), 30, LVCFMT_LEFT }
|
||||
};
|
||||
|
||||
// Get the size of the file list control and neatly
|
||||
// divide it into columns
|
||||
|
||||
CRect rcFileList;
|
||||
m_cFileList.GetClientRect(&rcFileList);
|
||||
|
||||
int nColTotal = sizeof(aColData) / sizeof(aColData[0]);
|
||||
int nWidthRemaining = rcFileList.Width();
|
||||
|
||||
for (int nCol = 0; nCol < nColTotal; nCol++)
|
||||
{
|
||||
ColumnData *pData = &aColData[nCol];
|
||||
|
||||
int nColWidth = (rcFileList.Width() * pData->nPercentageWidth) / 100;
|
||||
if (nCol == nColTotal - 1)
|
||||
{
|
||||
nColWidth = nWidthRemaining;
|
||||
}
|
||||
else if (nColWidth > nWidthRemaining)
|
||||
{
|
||||
nColWidth = nWidthRemaining;
|
||||
}
|
||||
|
||||
m_cFileList.InsertColumn(nCol, pData->sColumnTitle, pData->nFormat, nColWidth);
|
||||
|
||||
nWidthRemaining -= nColWidth;
|
||||
if (nColWidth <= 0)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
}
|
||||
|
||||
|
||||
// If you add a minimize button to your dialog, you will need the code below
|
||||
// to draw the icon. For MFC applications using the document/view model,
|
||||
// this is automatically done for you by the framework.
|
||||
|
||||
void CIEPatcherDlg::OnPaint()
|
||||
{
|
||||
if (IsIconic())
|
||||
{
|
||||
CPaintDC dc(this); // device context for painting
|
||||
|
||||
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
|
||||
|
||||
// Center icon in client rectangle
|
||||
int cxIcon = GetSystemMetrics(SM_CXICON);
|
||||
int cyIcon = GetSystemMetrics(SM_CYICON);
|
||||
CRect rect;
|
||||
GetClientRect(&rect);
|
||||
int x = (rect.Width() - cxIcon + 1) / 2;
|
||||
int y = (rect.Height() - cyIcon + 1) / 2;
|
||||
|
||||
// Draw the icon
|
||||
dc.DrawIcon(x, y, m_hIcon);
|
||||
}
|
||||
else
|
||||
{
|
||||
CDialog::OnPaint();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// The system calls this to obtain the cursor to display while the user drags
|
||||
// the minimized window.
|
||||
HCURSOR CIEPatcherDlg::OnQueryDragIcon()
|
||||
{
|
||||
return (HCURSOR) m_hIcon;
|
||||
}
|
||||
|
||||
|
||||
// Automation servers should not exit when a user closes the UI
|
||||
// if a controller still holds on to one of its objects. These
|
||||
// message handlers make sure that if the proxy is still in use,
|
||||
// then the UI is hidden but the dialog remains around if it
|
||||
// is dismissed.
|
||||
|
||||
void CIEPatcherDlg::OnClose()
|
||||
{
|
||||
if (CanExit())
|
||||
CDialog::OnClose();
|
||||
}
|
||||
|
||||
|
||||
LONG CIEPatcherDlg::OnUpdateFileStatus(WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
PatchStatus ps = (PatchStatus) wParam;
|
||||
TCHAR *pszFile = (TCHAR *) lParam;
|
||||
UpdateFileStatus(pszFile, ps);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
void CIEPatcherDlg::OnScan()
|
||||
{
|
||||
CScanForFilesDlg dlg;
|
||||
|
||||
if (dlg.DoModal() == IDOK)
|
||||
{
|
||||
CWaitCursor wc;
|
||||
|
||||
CFileFind op;
|
||||
if (op.FindFile(dlg.m_sFilePattern))
|
||||
{
|
||||
op.FindNextFile();
|
||||
do {
|
||||
if (!op.IsDirectory())
|
||||
{
|
||||
AddFileToList(op.GetFilePath());
|
||||
}
|
||||
} while (op.FindNextFile());
|
||||
op.Close();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void CIEPatcherDlg::OnPatch()
|
||||
{
|
||||
int nItem = -1;
|
||||
do {
|
||||
nItem = m_cFileList.GetNextItem(nItem, LVNI_ALL | LVNI_SELECTED);
|
||||
if (nItem != -1)
|
||||
{
|
||||
m_cQueuedFileDataList[nItem]->ps = psPatchPending;
|
||||
UpdateFileStatus(nItem, m_cQueuedFileDataList[nItem]->sFileName, m_cQueuedFileDataList[nItem]->ps);
|
||||
}
|
||||
} while (nItem != -1);
|
||||
}
|
||||
|
||||
|
||||
void CIEPatcherDlg::OnClickFilelist(NMHDR* pNMHDR, LRESULT* pResult)
|
||||
{
|
||||
// Check if files are selected
|
||||
|
||||
*pResult = 0;
|
||||
}
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
BOOL CIEPatcherDlg::CanExit()
|
||||
{
|
||||
// If the proxy object is still around, then the automation
|
||||
// controller is still holding on to this application. Leave
|
||||
// the dialog around, but hide its UI.
|
||||
if (m_pAutoProxy != NULL)
|
||||
{
|
||||
ShowWindow(SW_HIDE);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
PatchStatus CIEPatcherDlg::ScanFile(const CString &sFileName)
|
||||
{
|
||||
char *pszBuffer = NULL;
|
||||
long nBufferSize = 0;
|
||||
if (!ReadFileToBuffer(sFileName, &pszBuffer, &nBufferSize))
|
||||
{
|
||||
return psFileError;
|
||||
}
|
||||
|
||||
PatchStatus ps = ScanBuffer(pszBuffer, nBufferSize, FALSE);
|
||||
delete []pszBuffer;
|
||||
return ps;
|
||||
}
|
||||
|
||||
|
||||
BOOL CIEPatcherDlg::WriteBufferToFile(const CString &sFileName, char *pszBuffer, long nBufferSize)
|
||||
{
|
||||
CString sMessage;
|
||||
sMessage.Format("Saving patched file \"%s\"", sFileName);
|
||||
TraceProgress(sMessage);
|
||||
|
||||
FILE *fDest = fopen(sFileName, "wb");
|
||||
if (fDest == NULL)
|
||||
{
|
||||
TraceProgress("Error: Could not open destination file");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
fwrite(pszBuffer, 1, nBufferSize, fDest);
|
||||
fclose(fDest);
|
||||
TraceProgress("File saved");
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
BOOL CIEPatcherDlg::ReadFileToBuffer(const CString &sFileName, char **ppszBuffer, long *pnBufferSize)
|
||||
{
|
||||
CString sProcessing;
|
||||
sProcessing.Format("Processing file \"%s\"", sFileName);
|
||||
TraceProgress(sProcessing);
|
||||
|
||||
// Allocate a memory buffer to slurp up the whole file
|
||||
struct _stat srcStat;
|
||||
_stat(sFileName, &srcStat);
|
||||
|
||||
char *pszBuffer = new char[srcStat.st_size / sizeof(char)];
|
||||
if (pszBuffer == NULL)
|
||||
{
|
||||
TraceProgress("Error: Could not allocate buffer for file");
|
||||
return FALSE;
|
||||
}
|
||||
FILE *fSrc = fopen(sFileName, "rb");
|
||||
if (fSrc == NULL)
|
||||
{
|
||||
TraceProgress("Error: Could not open file");
|
||||
delete []pszBuffer;
|
||||
return FALSE;
|
||||
}
|
||||
size_t sizeSrc = srcStat.st_size;
|
||||
size_t sizeRead = 0;
|
||||
|
||||
// Dumb but effective
|
||||
sizeRead = fread(pszBuffer, 1, sizeSrc, fSrc);
|
||||
fclose(fSrc);
|
||||
|
||||
if (sizeRead != sizeSrc)
|
||||
{
|
||||
TraceProgress("Error: Could not read all of file");
|
||||
delete []pszBuffer;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
*ppszBuffer = pszBuffer;
|
||||
*pnBufferSize = sizeRead;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
PatchStatus CIEPatcherDlg::ScanBuffer(char *pszBuffer, long nBufferSize, BOOL bApplyPatch)
|
||||
{
|
||||
if (nBufferSize < sizeof(CLSID))
|
||||
{
|
||||
return psNotPatchable;
|
||||
}
|
||||
|
||||
TraceProgress("Scanning for IE...");
|
||||
|
||||
BOOL bPatchApplied = FALSE;
|
||||
PatchStatus ps = psUnknownStatus;
|
||||
|
||||
// Scan through buffer, one byte at a time doing a memcmp
|
||||
for (size_t i = 0; i < nBufferSize - sizeof(CLSID); i++)
|
||||
{
|
||||
if (memcmp(&pszBuffer[i], &CLSID_MozillaBrowser, sizeof(CLSID)) == 0)
|
||||
{
|
||||
TraceProgress("Found CLSID_MozillaBrowser");
|
||||
if (ps == psUnknownStatus)
|
||||
{
|
||||
ps = psAlreadyPatched;
|
||||
}
|
||||
}
|
||||
else if (memcmp(&pszBuffer[i], &CLSID_WebBrowser_V1, sizeof(CLSID)) == 0)
|
||||
{
|
||||
TraceProgress("Found CLSID_WebBrowser_V1");
|
||||
if (ps == psUnknownStatus)
|
||||
{
|
||||
ps = psPatchable;
|
||||
}
|
||||
if (bApplyPatch)
|
||||
{
|
||||
TraceProgress("Patching with CLSID_MozillaBrowser");
|
||||
memcpy(&pszBuffer[i], &CLSID_MozillaBrowser, sizeof(CLSID));
|
||||
bPatchApplied = TRUE;
|
||||
}
|
||||
}
|
||||
else if (memcmp(&pszBuffer[i], &CLSID_WebBrowser, sizeof(CLSID)) == 0)
|
||||
{
|
||||
TraceProgress("Found CLSID_WebBrowser");
|
||||
if (ps == psUnknownStatus)
|
||||
{
|
||||
ps = psPatchable;
|
||||
}
|
||||
if (bApplyPatch)
|
||||
{
|
||||
TraceProgress("Patching with CLSID_MozillaBrowser");
|
||||
memcpy(&pszBuffer[i], &CLSID_MozillaBrowser, sizeof(CLSID));
|
||||
TraceProgress("Patching with CLSID_MozillaBrowser");
|
||||
bPatchApplied = TRUE;
|
||||
}
|
||||
}
|
||||
else if (memcmp(&pszBuffer[i], &IID_IWebBrowser, sizeof(CLSID)) == 0)
|
||||
{
|
||||
TraceProgress("Found IID_IWebBrowser");
|
||||
if (ps == psUnknownStatus)
|
||||
{
|
||||
ps = psPatchable;
|
||||
}
|
||||
}
|
||||
else if (memcmp(&pszBuffer[i], &CLSID_InternetExplorer, sizeof(CLSID)) == 0)
|
||||
{
|
||||
TraceProgress("Warning: Found CLSID_InternetExplorer, patching might not work");
|
||||
if (ps == psUnknownStatus)
|
||||
{
|
||||
ps = psMayBePatchable;
|
||||
}
|
||||
}
|
||||
else if (memcmp(&pszBuffer[i], &IID_IWebBrowser2, sizeof(CLSID)) == 0)
|
||||
{
|
||||
TraceProgress("Found IID_IWebBrowser2");
|
||||
if (ps == psUnknownStatus)
|
||||
{
|
||||
ps = psPatchable;
|
||||
}
|
||||
}
|
||||
else if (memcmp(&pszBuffer[i], &IID_IWebBrowserApp, sizeof(CLSID)) == 0)
|
||||
{
|
||||
TraceProgress("Found IID_IWebBrowserApp");
|
||||
if (ps == psUnknownStatus)
|
||||
{
|
||||
ps = psPatchable;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (ps == psUnknownStatus)
|
||||
{
|
||||
ps = psNotPatchable;
|
||||
}
|
||||
if (bApplyPatch)
|
||||
{
|
||||
ps = (bPatchApplied) ? psAlreadyPatched : psNotPatchable;
|
||||
}
|
||||
|
||||
TraceProgress("Scan completed");
|
||||
|
||||
return ps;
|
||||
}
|
||||
|
||||
|
||||
BOOL CIEPatcherDlg::PatchFile(const CString & sFileFrom, const CString & sFileTo, PatchStatus *pPatchStatus)
|
||||
{
|
||||
if (sFileTo.IsEmpty())
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
if (sFileTo == sFileFrom)
|
||||
{
|
||||
TraceProgress("Warning: Patching disabled for safety reasons, source and destination names must differ");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
char *pszBuffer = NULL;
|
||||
long nBufferSize = 0;
|
||||
|
||||
if (!ReadFileToBuffer(sFileFrom, &pszBuffer, &nBufferSize))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
// Scan and patch the buffer
|
||||
*pPatchStatus = ScanBuffer(pszBuffer, nBufferSize, TRUE);
|
||||
if (*pPatchStatus == psNotPatchable)
|
||||
{
|
||||
TraceProgress("Error: Nothing was found to patch");
|
||||
}
|
||||
else
|
||||
{
|
||||
// Write out the patch file
|
||||
WriteBufferToFile(sFileTo, pszBuffer, nBufferSize);
|
||||
}
|
||||
|
||||
delete []pszBuffer;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
void CIEPatcherDlg::TraceProgress(const CString &sProgress)
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
|
||||
void CIEPatcherDlg::AddFileToList(const CString & sFile)
|
||||
{
|
||||
CSingleLock sl(&m_csQueuedFileDataList, TRUE);
|
||||
|
||||
int nIndex = m_cFileList.GetItemCount();
|
||||
m_cFileList.InsertItem(nIndex, sFile, IMG_UNKNOWNSTATUS);
|
||||
|
||||
QueuedFileData *pData = new QueuedFileData;
|
||||
pData->ps = psUnknownStatus;
|
||||
pData->sFileName = sFile;
|
||||
pData->sPatchedFileName = sFile;
|
||||
m_cQueuedFileDataList.Add(pData);
|
||||
|
||||
UpdateFileStatus(nIndex, pData->ps);
|
||||
}
|
||||
|
||||
|
||||
void CIEPatcherDlg::UpdateFileStatus(int nFileIndex, const CString &sFile, PatchStatus ps)
|
||||
{
|
||||
CString sStatus;
|
||||
int nIconStatus = -1;
|
||||
|
||||
switch (ps)
|
||||
{
|
||||
case psFileError:
|
||||
sStatus = _T("File error");
|
||||
break;
|
||||
|
||||
case psNotPatchable:
|
||||
sStatus = _T("Nothing to patch");
|
||||
nIconStatus = IMG_DOESNTCONTAINIE;
|
||||
break;
|
||||
|
||||
case psPatchable:
|
||||
sStatus = _T("Patchable");
|
||||
nIconStatus = IMG_CONTAINSIE;
|
||||
break;
|
||||
|
||||
case psMayBePatchable:
|
||||
sStatus = _T("Maybe patchable");
|
||||
nIconStatus = IMG_CONTAINSIE;
|
||||
break;
|
||||
|
||||
case psAlreadyPatched:
|
||||
sStatus = _T("Already patched");
|
||||
nIconStatus = IMG_CONTAINSMOZILLA;
|
||||
break;
|
||||
|
||||
case psUnknownStatus:
|
||||
sStatus = _T("Status pending");
|
||||
nIconStatus = IMG_UNKNOWNSTATUS;
|
||||
break;
|
||||
|
||||
case psPatchPending:
|
||||
sStatus = _T("Patch pending");
|
||||
break;
|
||||
|
||||
default:
|
||||
sStatus = _T("*** ERROR ***");
|
||||
break;
|
||||
}
|
||||
|
||||
if (nIconStatus != -1)
|
||||
{
|
||||
m_cFileList.SetItem(nFileIndex, -1, LVIF_IMAGE, NULL, nIconStatus, 0, 0, 0);
|
||||
}
|
||||
m_cFileList.SetItemText(nFileIndex, ITEM_PATCHSTATUS, sStatus);
|
||||
}
|
||||
|
||||
|
||||
void CIEPatcherDlg::UpdateFileStatus(const CString &sFile, PatchStatus ps)
|
||||
{
|
||||
CSingleLock sl(&m_csQueuedFileDataList, TRUE);
|
||||
|
||||
for (int n = 0; n < m_cQueuedFileDataList.GetSize(); n++)
|
||||
{
|
||||
if (m_cQueuedFileDataList[n]->sFileName == sFile)
|
||||
{
|
||||
UpdateFileStatus(n, sFile, ps);
|
||||
m_cQueuedFileDataList[n]->ps = ps;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
BOOL CIEPatcherDlg::GetPendingFileToScan(CString & sFileToScan)
|
||||
{
|
||||
CSingleLock sl(&m_csQueuedFileDataList, TRUE);
|
||||
|
||||
for (int n = 0; n < m_cQueuedFileDataList.GetSize(); n++)
|
||||
{
|
||||
if (m_cQueuedFileDataList[n]->ps == psUnknownStatus)
|
||||
{
|
||||
sFileToScan = m_cQueuedFileDataList[n]->sFileName;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
BOOL CIEPatcherDlg::GetPendingFileToPatch(CString & sFileToPatch)
|
||||
{
|
||||
CSingleLock sl(&m_csQueuedFileDataList, TRUE);
|
||||
|
||||
for (int n = 0; n < m_cQueuedFileDataList.GetSize(); n++)
|
||||
{
|
||||
if (m_cQueuedFileDataList[n]->ps == psPatchPending)
|
||||
{
|
||||
sFileToPatch = m_cQueuedFileDataList[n]->sFileName;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
105
mozilla/embedding/browser/activex/tests/IEPatcher/IEPatcherDlg.h
Normal file
@@ -0,0 +1,105 @@
|
||||
// IEPatcherDlg.h : header file
|
||||
//
|
||||
|
||||
#if !defined(AFX_IEPATCHERDLG_H__A603167C_3B36_11D2_B44D_00600819607E__INCLUDED_)
|
||||
#define AFX_IEPATCHERDLG_H__A603167C_3B36_11D2_B44D_00600819607E__INCLUDED_
|
||||
|
||||
#if _MSC_VER >= 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER >= 1000
|
||||
|
||||
class CIEPatcherDlgAutoProxy;
|
||||
|
||||
enum PatchStatus
|
||||
{
|
||||
psFileError,
|
||||
psUnknownStatus,
|
||||
psPatchPending,
|
||||
psNotPatchable,
|
||||
psPatchable,
|
||||
psMayBePatchable,
|
||||
psAlreadyPatched
|
||||
};
|
||||
|
||||
struct QueuedFileData
|
||||
{
|
||||
CString sFileName;
|
||||
CString sPatchedFileName;
|
||||
PatchStatus ps;
|
||||
};
|
||||
|
||||
#define WM_UPDATEFILESTATUS WM_USER+1
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CIEPatcherDlg dialog
|
||||
|
||||
class CIEPatcherDlg : public CDialog
|
||||
{
|
||||
DECLARE_DYNAMIC(CIEPatcherDlg);
|
||||
friend class CIEPatcherDlgAutoProxy;
|
||||
|
||||
// Construction
|
||||
public:
|
||||
void AddFileToList(const CString &sFile);
|
||||
BOOL GetPendingFileToScan(CString &sFileToScan);
|
||||
BOOL GetPendingFileToPatch(CString &sFileToPatch);
|
||||
|
||||
static PatchStatus ScanFile(const CString &sFileName);
|
||||
static PatchStatus ScanBuffer(char *pszBuffer, long nBufferSize, BOOL bApplyPatches);
|
||||
static BOOL PatchFile(const CString & sFileFrom, const CString & sFileTo, PatchStatus *pPatchStatus);
|
||||
|
||||
static BOOL WriteBufferToFile(const CString &sFileName, char *pszBuffer, long nBufferSize);
|
||||
static BOOL ReadFileToBuffer(const CString &sFileName, char **ppszBuffer, long *pnBufferSize);
|
||||
static void TraceProgress(const CString &sProgress);
|
||||
|
||||
void UpdateFileStatus(const CString &sFile, PatchStatus ps);
|
||||
void UpdateFileStatus(int nFileIndex, const CString &sFile, PatchStatus ps);
|
||||
|
||||
|
||||
CIEPatcherDlg(CWnd* pParent = NULL); // standard constructor
|
||||
virtual ~CIEPatcherDlg();
|
||||
|
||||
CImageList m_cImageList;
|
||||
|
||||
CArray<QueuedFileData *, QueuedFileData *> m_cQueuedFileDataList;
|
||||
CCriticalSection m_csQueuedFileDataList;
|
||||
|
||||
// Dialog Data
|
||||
//{{AFX_DATA(CIEPatcherDlg)
|
||||
enum { IDD = IDD_IEPATCHER_DIALOG };
|
||||
CButton m_btnPatch;
|
||||
CListCtrl m_cFileList;
|
||||
//}}AFX_DATA
|
||||
|
||||
// ClassWizard generated virtual function overrides
|
||||
//{{AFX_VIRTUAL(CIEPatcherDlg)
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
|
||||
//}}AFX_VIRTUAL
|
||||
|
||||
// Implementation
|
||||
protected:
|
||||
CIEPatcherDlgAutoProxy* m_pAutoProxy;
|
||||
HICON m_hIcon;
|
||||
|
||||
BOOL CanExit();
|
||||
|
||||
// Generated message map functions
|
||||
//{{AFX_MSG(CIEPatcherDlg)
|
||||
virtual BOOL OnInitDialog();
|
||||
afx_msg void OnPaint();
|
||||
afx_msg HCURSOR OnQueryDragIcon();
|
||||
afx_msg void OnClose();
|
||||
afx_msg void OnScan();
|
||||
afx_msg void OnClickFilelist(NMHDR* pNMHDR, LRESULT* pResult);
|
||||
afx_msg void OnPatch();
|
||||
//}}AFX_MSG
|
||||
afx_msg LONG OnUpdateFileStatus(WPARAM, LPARAM);
|
||||
DECLARE_MESSAGE_MAP()
|
||||
};
|
||||
|
||||
//{{AFX_INSERT_LOCATION}}
|
||||
// Microsoft Developer Studio will insert additional declarations immediately before the previous line.
|
||||
|
||||
#endif // !defined(AFX_IEPATCHERDLG_H__A603167C_3B36_11D2_B44D_00600819607E__INCLUDED_)
|
||||
|
||||
@@ -0,0 +1,110 @@
|
||||
// ScanForFilesDlg.cpp : implementation file
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "IEPatcher.h"
|
||||
#include "ScanForFilesDlg.h"
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define new DEBUG_NEW
|
||||
#undef THIS_FILE
|
||||
static char THIS_FILE[] = __FILE__;
|
||||
#endif
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CScanForFilesDlg dialog
|
||||
|
||||
|
||||
CScanForFilesDlg::CScanForFilesDlg(CWnd* pParent /*=NULL*/)
|
||||
: CDialog(CScanForFilesDlg::IDD, pParent)
|
||||
{
|
||||
//{{AFX_DATA_INIT(CScanForFilesDlg)
|
||||
m_sFilePattern = _T("");
|
||||
//}}AFX_DATA_INIT
|
||||
}
|
||||
|
||||
|
||||
void CScanForFilesDlg::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
//{{AFX_DATA_MAP(CScanForFilesDlg)
|
||||
DDX_Text(pDX, IDC_FILEPATTERN, m_sFilePattern);
|
||||
//}}AFX_DATA_MAP
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CScanForFilesDlg, CDialog)
|
||||
//{{AFX_MSG_MAP(CScanForFilesDlg)
|
||||
ON_BN_CLICKED(IDC_SELECTFILE, OnSelectFile)
|
||||
ON_BN_CLICKED(IDC_SELECTFOLDER, OnSelectFolder)
|
||||
//}}AFX_MSG_MAP
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CScanForFilesDlg message handlers
|
||||
|
||||
void CScanForFilesDlg::OnOK()
|
||||
{
|
||||
UpdateData();
|
||||
CDialog::OnOK();
|
||||
}
|
||||
|
||||
void CScanForFilesDlg::OnSelectFile()
|
||||
{
|
||||
CFileDialog dlg(TRUE, NULL, _T("*.*"));
|
||||
|
||||
if (dlg.DoModal() == IDOK)
|
||||
{
|
||||
m_sFilePattern = dlg.GetPathName();
|
||||
UpdateData(FALSE);
|
||||
}
|
||||
}
|
||||
|
||||
void CScanForFilesDlg::OnSelectFolder()
|
||||
{
|
||||
BROWSEINFO bi;
|
||||
TCHAR szFolder[MAX_PATH + 1];
|
||||
|
||||
memset(szFolder, 0, sizeof(szFolder));
|
||||
|
||||
memset(&bi, 0, sizeof(bi));
|
||||
bi.hwndOwner = GetSafeHwnd();
|
||||
bi.pidlRoot = NULL;
|
||||
bi.pszDisplayName = szFolder;
|
||||
bi.lpszTitle = _T("Pick a folder to scan");
|
||||
|
||||
// Open the folder browser dialog
|
||||
LPITEMIDLIST pItemList = SHBrowseForFolder(&bi);
|
||||
if (pItemList)
|
||||
{
|
||||
IMalloc *pShellAllocator = NULL;
|
||||
|
||||
SHGetMalloc(&pShellAllocator);
|
||||
if (pShellAllocator)
|
||||
{
|
||||
char szPath[MAX_PATH + 1];
|
||||
|
||||
if (SHGetPathFromIDList(pItemList, szPath))
|
||||
{
|
||||
// Chop off the end path seperator
|
||||
int nPathSize = strlen(szPath);
|
||||
if (nPathSize > 0)
|
||||
{
|
||||
if (szPath[nPathSize - 1] == '\\')
|
||||
{
|
||||
szPath[nPathSize - 1] = '\0';
|
||||
}
|
||||
}
|
||||
|
||||
// Form the file pattern
|
||||
USES_CONVERSION;
|
||||
m_sFilePattern.Format(_T("%s\\*.*"), A2T(szPath));
|
||||
UpdateData(FALSE);
|
||||
}
|
||||
|
||||
pShellAllocator->Free(pItemList);
|
||||
pShellAllocator->Release();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
#if !defined(AFX_SCANFORFILESDLG_H__2CAAFC02_6C47_11D2_A1F5_000000000000__INCLUDED_)
|
||||
#define AFX_SCANFORFILESDLG_H__2CAAFC02_6C47_11D2_A1F5_000000000000__INCLUDED_
|
||||
|
||||
#if _MSC_VER >= 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER >= 1000
|
||||
// ScanForFilesDlg.h : header file
|
||||
//
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CScanForFilesDlg dialog
|
||||
|
||||
class CScanForFilesDlg : public CDialog
|
||||
{
|
||||
// Construction
|
||||
public:
|
||||
CScanForFilesDlg(CWnd* pParent = NULL); // standard constructor
|
||||
|
||||
// Dialog Data
|
||||
//{{AFX_DATA(CScanForFilesDlg)
|
||||
enum { IDD = IDD_SCANFORFILES };
|
||||
CString m_sFilePattern;
|
||||
//}}AFX_DATA
|
||||
|
||||
|
||||
// Overrides
|
||||
// ClassWizard generated virtual function overrides
|
||||
//{{AFX_VIRTUAL(CScanForFilesDlg)
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
|
||||
//}}AFX_VIRTUAL
|
||||
|
||||
// Implementation
|
||||
protected:
|
||||
|
||||
// Generated message map functions
|
||||
//{{AFX_MSG(CScanForFilesDlg)
|
||||
virtual void OnOK();
|
||||
afx_msg void OnSelectFile();
|
||||
afx_msg void OnSelectFolder();
|
||||
//}}AFX_MSG
|
||||
DECLARE_MESSAGE_MAP()
|
||||
};
|
||||
|
||||
//{{AFX_INSERT_LOCATION}}
|
||||
// Microsoft Developer Studio will insert additional declarations immediately before the previous line.
|
||||
|
||||
#endif // !defined(AFX_SCANFORFILESDLG_H__2CAAFC02_6C47_11D2_A1F5_000000000000__INCLUDED_)
|
||||
@@ -0,0 +1,46 @@
|
||||
// ScannerThread.cpp : implementation file
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "iepatcher.h"
|
||||
#include "ScannerThread.h"
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define new DEBUG_NEW
|
||||
#undef THIS_FILE
|
||||
static char THIS_FILE[] = __FILE__;
|
||||
#endif
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CScannerThread
|
||||
|
||||
IMPLEMENT_DYNCREATE(CScannerThread, CWinThread)
|
||||
|
||||
CScannerThread::CScannerThread()
|
||||
{
|
||||
}
|
||||
|
||||
CScannerThread::~CScannerThread()
|
||||
{
|
||||
}
|
||||
|
||||
BOOL CScannerThread::InitInstance()
|
||||
{
|
||||
m_cScannerWnd.Create(AfxRegisterWndClass(0), _T("Scanner"), 0L, CRect(0, 0, 0, 0), AfxGetMainWnd(), 1);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
int CScannerThread::ExitInstance()
|
||||
{
|
||||
// TODO: perform any per-thread cleanup here
|
||||
return CWinThread::ExitInstance();
|
||||
}
|
||||
|
||||
BEGIN_MESSAGE_MAP(CScannerThread, CWinThread)
|
||||
//{{AFX_MSG_MAP(CScannerThread)
|
||||
// NOTE - the ClassWizard will add and remove mapping macros here.
|
||||
//}}AFX_MSG_MAP
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CScannerThread message handlers
|
||||
@@ -0,0 +1,54 @@
|
||||
#if !defined(AFX_SCANNERTHREAD_H__2CAAFC04_6C47_11D2_A1F5_000000000000__INCLUDED_)
|
||||
#define AFX_SCANNERTHREAD_H__2CAAFC04_6C47_11D2_A1F5_000000000000__INCLUDED_
|
||||
|
||||
#if _MSC_VER >= 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER >= 1000
|
||||
// ScannerThread.h : header file
|
||||
//
|
||||
|
||||
#include "ScannerWnd.h"
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CScannerThread thread
|
||||
|
||||
class CScannerThread : public CWinThread
|
||||
{
|
||||
DECLARE_DYNCREATE(CScannerThread)
|
||||
protected:
|
||||
CScannerThread(); // protected constructor used by dynamic creation
|
||||
|
||||
// Attributes
|
||||
public:
|
||||
CScannerWnd m_cScannerWnd;
|
||||
|
||||
// Operations
|
||||
public:
|
||||
|
||||
// Overrides
|
||||
// ClassWizard generated virtual function overrides
|
||||
//{{AFX_VIRTUAL(CScannerThread)
|
||||
public:
|
||||
virtual BOOL InitInstance();
|
||||
virtual int ExitInstance();
|
||||
//}}AFX_VIRTUAL
|
||||
|
||||
// Implementation
|
||||
protected:
|
||||
virtual ~CScannerThread();
|
||||
|
||||
// Generated message map functions
|
||||
//{{AFX_MSG(CScannerThread)
|
||||
// NOTE - the ClassWizard will add and remove member functions here.
|
||||
//}}AFX_MSG
|
||||
|
||||
DECLARE_MESSAGE_MAP()
|
||||
};
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
//{{AFX_INSERT_LOCATION}}
|
||||
// Microsoft Developer Studio will insert additional declarations immediately before the previous line.
|
||||
|
||||
#endif // !defined(AFX_SCANNERTHREAD_H__2CAAFC04_6C47_11D2_A1F5_000000000000__INCLUDED_)
|
||||
@@ -0,0 +1,82 @@
|
||||
// ScannerWnd.cpp : implementation file
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "iepatcher.h"
|
||||
#include "ScannerWnd.h"
|
||||
#include "IEPatcherDlg.h"
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define new DEBUG_NEW
|
||||
#undef THIS_FILE
|
||||
static char THIS_FILE[] = __FILE__;
|
||||
#endif
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CScannerWnd
|
||||
|
||||
CScannerWnd::CScannerWnd()
|
||||
{
|
||||
}
|
||||
|
||||
CScannerWnd::~CScannerWnd()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CScannerWnd, CWnd)
|
||||
//{{AFX_MSG_MAP(CScannerWnd)
|
||||
ON_WM_TIMER()
|
||||
ON_WM_CREATE()
|
||||
//}}AFX_MSG_MAP
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CScannerWnd message handlers
|
||||
|
||||
|
||||
int CScannerWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)
|
||||
{
|
||||
if (CWnd::OnCreate(lpCreateStruct) == -1)
|
||||
return -1;
|
||||
|
||||
SetTimer(1, 500, NULL);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
void CScannerWnd::OnTimer(UINT nIDEvent)
|
||||
{
|
||||
CIEPatcherDlg * pDlg = ((CIEPatcherApp *) AfxGetApp())->m_pIEPatcherDlg;
|
||||
if (pDlg)
|
||||
{
|
||||
CString sFileToProcess;
|
||||
if (pDlg->GetPendingFileToScan(sFileToProcess))
|
||||
{
|
||||
PatchStatus ps = CIEPatcherDlg::ScanFile(sFileToProcess);
|
||||
AfxGetMainWnd()->SendMessage(WM_UPDATEFILESTATUS, (WPARAM) ps, (LPARAM) (const TCHAR *) sFileToProcess);
|
||||
}
|
||||
else if (pDlg->GetPendingFileToPatch(sFileToProcess))
|
||||
{
|
||||
TCHAR szDrive[_MAX_DRIVE];
|
||||
TCHAR szDir[_MAX_DIR];
|
||||
TCHAR szFile[_MAX_FNAME];
|
||||
TCHAR szExt[_MAX_EXT];
|
||||
|
||||
_tsplitpath(sFileToProcess, szDrive, szDir, szFile, szExt);
|
||||
|
||||
CString sFileOut;
|
||||
TCHAR szPath[_MAX_PATH];
|
||||
sFileOut.Format(_T("moz_%s"), szFile);
|
||||
_tmakepath(szPath, szDrive, szDir, sFileOut, szExt);
|
||||
|
||||
PatchStatus ps;
|
||||
CIEPatcherDlg::PatchFile(sFileToProcess, szPath, &ps);
|
||||
AfxGetMainWnd()->SendMessage(WM_UPDATEFILESTATUS, (WPARAM) ps, (LPARAM) (const TCHAR *) sFileToProcess);
|
||||
}
|
||||
}
|
||||
|
||||
CWnd::OnTimer(nIDEvent);
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
#if !defined(AFX_SCANNERWND_H__2CAAFC05_6C47_11D2_A1F5_000000000000__INCLUDED_)
|
||||
#define AFX_SCANNERWND_H__2CAAFC05_6C47_11D2_A1F5_000000000000__INCLUDED_
|
||||
|
||||
#if _MSC_VER >= 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER >= 1000
|
||||
// ScannerWnd.h : header file
|
||||
//
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CScannerWnd window
|
||||
|
||||
class CScannerWnd : public CWnd
|
||||
{
|
||||
// Construction
|
||||
public:
|
||||
CScannerWnd();
|
||||
|
||||
// Attributes
|
||||
public:
|
||||
|
||||
// Operations
|
||||
public:
|
||||
|
||||
// Overrides
|
||||
// ClassWizard generated virtual function overrides
|
||||
//{{AFX_VIRTUAL(CScannerWnd)
|
||||
//}}AFX_VIRTUAL
|
||||
|
||||
// Implementation
|
||||
public:
|
||||
virtual ~CScannerWnd();
|
||||
|
||||
// Generated message map functions
|
||||
protected:
|
||||
//{{AFX_MSG(CScannerWnd)
|
||||
afx_msg void OnTimer(UINT nIDEvent);
|
||||
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
|
||||
//}}AFX_MSG
|
||||
DECLARE_MESSAGE_MAP()
|
||||
};
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
//{{AFX_INSERT_LOCATION}}
|
||||
// Microsoft Developer Studio will insert additional declarations immediately before the previous line.
|
||||
|
||||
#endif // !defined(AFX_SCANNERWND_H__2CAAFC05_6C47_11D2_A1F5_000000000000__INCLUDED_)
|
||||
@@ -0,0 +1,6 @@
|
||||
// stdafx.cpp : source file that includes just the standard includes
|
||||
// IEPatcher.pch will be the pre-compiled header
|
||||
// stdafx.obj will contain the pre-compiled type information
|
||||
|
||||
#include "stdafx.h"
|
||||
|
||||
42
mozilla/embedding/browser/activex/tests/IEPatcher/StdAfx.h
Normal file
@@ -0,0 +1,42 @@
|
||||
// stdafx.h : include file for standard system include files,
|
||||
// or project specific include files that are used frequently, but
|
||||
// are changed infrequently
|
||||
//
|
||||
|
||||
#if !defined(AFX_STDAFX_H__A6031681_3B36_11D2_B44D_00600819607E__INCLUDED_)
|
||||
#define AFX_STDAFX_H__A6031681_3B36_11D2_B44D_00600819607E__INCLUDED_
|
||||
|
||||
#if _MSC_VER >= 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER >= 1000
|
||||
|
||||
#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers
|
||||
|
||||
#include <afxwin.h> // MFC core and standard components
|
||||
#include <afxext.h> // MFC extensions
|
||||
#include <afxdisp.h> // MFC OLE automation classes
|
||||
#ifndef _AFX_NO_AFXCMN_SUPPORT
|
||||
#include <afxcmn.h> // MFC support for Windows Common Controls
|
||||
#endif // _AFX_NO_AFXCMN_SUPPORT
|
||||
#include <afxtempl.h>
|
||||
#include <afxmt.h>
|
||||
#include <afxpriv.h>
|
||||
|
||||
#include <shlobj.h>
|
||||
|
||||
// This macro is the same as IMPLEMENT_OLECREATE, except it passes TRUE
|
||||
// for the bMultiInstance parameter to the COleObjectFactory constructor.
|
||||
// We want a separate instance of this application to be launched for
|
||||
// each OLE automation proxy object requested by automation controllers.
|
||||
#ifndef IMPLEMENT_OLECREATE2
|
||||
#define IMPLEMENT_OLECREATE2(class_name, external_name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
|
||||
AFX_DATADEF COleObjectFactory class_name::factory(class_name::guid, \
|
||||
RUNTIME_CLASS(class_name), TRUE, _T(external_name)); \
|
||||
const AFX_DATADEF GUID class_name::guid = \
|
||||
{ l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } };
|
||||
#endif // IMPLEMENT_OLECREATE2
|
||||
|
||||
//{{AFX_INSERT_LOCATION}}
|
||||
// Microsoft Developer Studio will insert additional declarations immediately before the previous line.
|
||||
|
||||
#endif // !defined(AFX_STDAFX_H__A6031681_3B36_11D2_B44D_00600819607E__INCLUDED_)
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
@@ -0,0 +1,13 @@
|
||||
//
|
||||
// IEPATCHER.RC2 - resources Microsoft Visual C++ does not edit directly
|
||||
//
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
#error this file is not editable by Microsoft Visual C++
|
||||
#endif //APSTUDIO_INVOKED
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Add manually edited resources here...
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
After Width: | Height: | Size: 318 B |
|
After Width: | Height: | Size: 318 B |
|
After Width: | Height: | Size: 318 B |
|
After Width: | Height: | Size: 318 B |
35
mozilla/embedding/browser/activex/tests/IEPatcher/resource.h
Normal file
@@ -0,0 +1,35 @@
|
||||
//{{NO_DEPENDENCIES}}
|
||||
// Microsoft Developer Studio generated include file.
|
||||
// Used by IEPatcher.rc
|
||||
//
|
||||
#define IDP_OLE_INIT_FAILED 100
|
||||
#define IDD_IEPATCHER_DIALOG 102
|
||||
#define IDR_MAINFRAME 128
|
||||
#define IDI_CONTAINSIE 129
|
||||
#define IDI_DOESNTCONTAINIE 130
|
||||
#define IDI_CONTAINSMOZILLA 131
|
||||
#define IDD_SCANFORFILES 132
|
||||
#define IDI_UNKNOWNSTATUS 133
|
||||
#define IDC_FILENAME 1000
|
||||
#define IDC_SCAN 1001
|
||||
#define IDC_PROGRESS 1002
|
||||
#define IDC_PATCHFILE 1003
|
||||
#define IDC_DESTINATION_FILENAME 1004
|
||||
#define IDC_PICKSOURCE 1005
|
||||
#define IDC_PICKDESTINATION 1006
|
||||
#define IDC_FILELIST 1007
|
||||
#define IDC_PATCH 1008
|
||||
#define IDC_FILEPATTERN 1009
|
||||
#define IDC_SELECTFILE 1011
|
||||
#define IDC_SELECTFOLDER 1012
|
||||
|
||||
// Next default values for new objects
|
||||
//
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||
#define _APS_NEXT_RESOURCE_VALUE 134
|
||||
#define _APS_NEXT_COMMAND_VALUE 32771
|
||||
#define _APS_NEXT_CONTROL_VALUE 1012
|
||||
#define _APS_NEXT_SYMED_VALUE 101
|
||||
#endif
|
||||
#endif
|
||||
|
After Width: | Height: | Size: 4.6 KiB |
88
mozilla/embedding/browser/activex/tests/RegMozCtl/ReadMe.txt
Normal file
@@ -0,0 +1,88 @@
|
||||
========================================================================
|
||||
MICROSOFT FOUNDATION CLASS LIBRARY : RegMozCtl
|
||||
========================================================================
|
||||
|
||||
|
||||
AppWizard has created this RegMozCtl application for you. This application
|
||||
not only demonstrates the basics of using the Microsoft Foundation classes
|
||||
but is also a starting point for writing your application.
|
||||
|
||||
This file contains a summary of what you will find in each of the files that
|
||||
make up your RegMozCtl application.
|
||||
|
||||
RegMozCtl.dsp
|
||||
This file (the project file) contains information at the project level and
|
||||
is used to build a single project or subproject. Other users can share the
|
||||
project (.dsp) file, but they should export the makefiles locally.
|
||||
|
||||
RegMozCtl.h
|
||||
This is the main header file for the application. It includes other
|
||||
project specific headers (including Resource.h) and declares the
|
||||
CRegMozCtlApp application class.
|
||||
|
||||
RegMozCtl.cpp
|
||||
This is the main application source file that contains the application
|
||||
class CRegMozCtlApp.
|
||||
|
||||
RegMozCtl.rc
|
||||
This is a listing of all of the Microsoft Windows resources that the
|
||||
program uses. It includes the icons, bitmaps, and cursors that are stored
|
||||
in the RES subdirectory. This file can be directly edited in Microsoft
|
||||
Visual C++.
|
||||
|
||||
RegMozCtl.clw
|
||||
This file contains information used by ClassWizard to edit existing
|
||||
classes or add new classes. ClassWizard also uses this file to store
|
||||
information needed to create and edit message maps and dialog data
|
||||
maps and to create prototype member functions.
|
||||
|
||||
res\RegMozCtl.ico
|
||||
This is an icon file, which is used as the application's icon. This
|
||||
icon is included by the main resource file RegMozCtl.rc.
|
||||
|
||||
res\RegMozCtl.rc2
|
||||
This file contains resources that are not edited by Microsoft
|
||||
Visual C++. You should place all resources not editable by
|
||||
the resource editor in this file.
|
||||
|
||||
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
AppWizard creates one dialog class:
|
||||
|
||||
RegMozCtlDlg.h, RegMozCtlDlg.cpp - the dialog
|
||||
These files contain your CRegMozCtlDlg class. This class defines
|
||||
the behavior of your application's main dialog. The dialog's
|
||||
template is in RegMozCtl.rc, which can be edited in Microsoft
|
||||
Visual C++.
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
Other standard files:
|
||||
|
||||
StdAfx.h, StdAfx.cpp
|
||||
These files are used to build a precompiled header (PCH) file
|
||||
named RegMozCtl.pch and a precompiled types file named StdAfx.obj.
|
||||
|
||||
Resource.h
|
||||
This is the standard header file, which defines new resource IDs.
|
||||
Microsoft Visual C++ reads and updates this file.
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
Other notes:
|
||||
|
||||
AppWizard uses "TODO:" to indicate parts of the source code you
|
||||
should add to or customize.
|
||||
|
||||
If your application uses MFC in a shared DLL, and your application is
|
||||
in a language other than the operating system's current language, you
|
||||
will need to copy the corresponding localized resources MFC42XXX.DLL
|
||||
from the Microsoft Visual C++ CD-ROM onto the system or system32 directory,
|
||||
and rename it to be MFCLOC.DLL. ("XXX" stands for the language abbreviation.
|
||||
For example, MFC42DEU.DLL contains resources translated to German.) If you
|
||||
don't do this, some of the UI elements of your application will remain in the
|
||||
language of the operating system.
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
@@ -0,0 +1,74 @@
|
||||
// RegMozCtl.cpp : Defines the class behaviors for the application.
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "RegMozCtl.h"
|
||||
#include "RegMozCtlDlg.h"
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define new DEBUG_NEW
|
||||
#undef THIS_FILE
|
||||
static char THIS_FILE[] = __FILE__;
|
||||
#endif
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CRegMozCtlApp
|
||||
|
||||
BEGIN_MESSAGE_MAP(CRegMozCtlApp, CWinApp)
|
||||
//{{AFX_MSG_MAP(CRegMozCtlApp)
|
||||
// NOTE - the ClassWizard will add and remove mapping macros here.
|
||||
// DO NOT EDIT what you see in these blocks of generated code!
|
||||
//}}AFX_MSG
|
||||
ON_COMMAND(ID_HELP, CWinApp::OnHelp)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CRegMozCtlApp construction
|
||||
|
||||
CRegMozCtlApp::CRegMozCtlApp()
|
||||
{
|
||||
// TODO: add construction code here,
|
||||
// Place all significant initialization in InitInstance
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// The one and only CRegMozCtlApp object
|
||||
|
||||
CRegMozCtlApp theApp;
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CRegMozCtlApp initialization
|
||||
|
||||
BOOL CRegMozCtlApp::InitInstance()
|
||||
{
|
||||
AfxEnableControlContainer();
|
||||
|
||||
// Standard initialization
|
||||
// If you are not using these features and wish to reduce the size
|
||||
// of your final executable, you should remove from the following
|
||||
// the specific initialization routines you do not need.
|
||||
|
||||
#ifdef _AFXDLL
|
||||
Enable3dControls(); // Call this when using MFC in a shared DLL
|
||||
#else
|
||||
Enable3dControlsStatic(); // Call this when linking to MFC statically
|
||||
#endif
|
||||
|
||||
CRegMozCtlDlg dlg;
|
||||
m_pMainWnd = &dlg;
|
||||
int nResponse = dlg.DoModal();
|
||||
if (nResponse == IDOK)
|
||||
{
|
||||
// TODO: Place code here to handle when the dialog is
|
||||
// dismissed with OK
|
||||
}
|
||||
else if (nResponse == IDCANCEL)
|
||||
{
|
||||
// TODO: Place code here to handle when the dialog is
|
||||
// dismissed with Cancel
|
||||
}
|
||||
|
||||
// Since the dialog has been closed, return FALSE so that we exit the
|
||||
// application, rather than start the application's message pump.
|
||||
return FALSE;
|
||||
}
|
||||
150
mozilla/embedding/browser/activex/tests/RegMozCtl/RegMozCtl.dsp
Normal file
@@ -0,0 +1,150 @@
|
||||
# Microsoft Developer Studio Project File - Name="RegMozCtl" - Package Owner=<4>
|
||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||
# ** DO NOT EDIT **
|
||||
|
||||
# TARGTYPE "Win32 (x86) Application" 0x0101
|
||||
|
||||
CFG=RegMozCtl - Win32 Debug
|
||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||
!MESSAGE use the Export Makefile command and run
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "RegMozCtl.mak".
|
||||
!MESSAGE
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "RegMozCtl.mak" CFG="RegMozCtl - Win32 Debug"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "RegMozCtl - Win32 Release" (based on "Win32 (x86) Application")
|
||||
!MESSAGE "RegMozCtl - Win32 Debug" (based on "Win32 (x86) Application")
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
# PROP AllowPerConfigDependencies 0
|
||||
# PROP Scc_ProjName ""
|
||||
# PROP Scc_LocalPath ""
|
||||
CPP=cl.exe
|
||||
MTL=midl.exe
|
||||
RSC=rc.exe
|
||||
|
||||
!IF "$(CFG)" == "RegMozCtl - Win32 Release"
|
||||
|
||||
# PROP BASE Use_MFC 5
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "Release"
|
||||
# PROP BASE Intermediate_Dir "Release"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 5
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "Release"
|
||||
# PROP Intermediate_Dir "Release"
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /Yu"stdafx.h" /FD /c
|
||||
# ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /Yu"stdafx.h" /FD /c
|
||||
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
||||
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
||||
# ADD BASE RSC /l 0x809 /d "NDEBUG"
|
||||
# ADD RSC /l 0x809 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 /nologo /subsystem:windows /machine:I386
|
||||
# ADD LINK32 /nologo /subsystem:windows /machine:I386
|
||||
|
||||
!ELSEIF "$(CFG)" == "RegMozCtl - Win32 Debug"
|
||||
|
||||
# PROP BASE Use_MFC 5
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "Debug"
|
||||
# PROP BASE Intermediate_Dir "Debug"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 5
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "Debug"
|
||||
# PROP Intermediate_Dir "Debug"
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /Yu"stdafx.h" /FD /GZ /c
|
||||
# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /Yu"stdafx.h" /FD /GZ /c
|
||||
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
||||
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
||||
# ADD BASE RSC /l 0x809 /d "_DEBUG"
|
||||
# ADD RSC /l 0x809 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
||||
# Name "RegMozCtl - Win32 Release"
|
||||
# Name "RegMozCtl - Win32 Debug"
|
||||
# Begin Group "Source Files"
|
||||
|
||||
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\RegMozCtl.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\RegMozCtl.rc
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\RegMozCtlDlg.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\StdAfx.cpp
|
||||
# ADD CPP /Yc"stdafx.h"
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Header Files"
|
||||
|
||||
# PROP Default_Filter "h;hpp;hxx;hm;inl"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\RegMozCtl.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\RegMozCtlDlg.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Resource.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\StdAfx.h
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Resource Files"
|
||||
|
||||
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\MozillaBrowser.ico
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\RegMozCtl.ico
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\RegMozCtl.rc2
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\ReadMe.txt
|
||||
# End Source File
|
||||
# End Target
|
||||
# End Project
|
||||
@@ -0,0 +1,49 @@
|
||||
// RegMozCtl.h : main header file for the REGMOZCTL application
|
||||
//
|
||||
|
||||
#if !defined(AFX_REGMOZCTL_H__C7C0A786_F424_11D2_A27B_000000000000__INCLUDED_)
|
||||
#define AFX_REGMOZCTL_H__C7C0A786_F424_11D2_A27B_000000000000__INCLUDED_
|
||||
|
||||
#if _MSC_VER > 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER > 1000
|
||||
|
||||
#ifndef __AFXWIN_H__
|
||||
#error include 'stdafx.h' before including this file for PCH
|
||||
#endif
|
||||
|
||||
#include "resource.h" // main symbols
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CRegMozCtlApp:
|
||||
// See RegMozCtl.cpp for the implementation of this class
|
||||
//
|
||||
|
||||
class CRegMozCtlApp : public CWinApp
|
||||
{
|
||||
public:
|
||||
CRegMozCtlApp();
|
||||
|
||||
// Overrides
|
||||
// ClassWizard generated virtual function overrides
|
||||
//{{AFX_VIRTUAL(CRegMozCtlApp)
|
||||
public:
|
||||
virtual BOOL InitInstance();
|
||||
//}}AFX_VIRTUAL
|
||||
|
||||
// Implementation
|
||||
|
||||
//{{AFX_MSG(CRegMozCtlApp)
|
||||
// NOTE - the ClassWizard will add and remove member functions here.
|
||||
// DO NOT EDIT what you see in these blocks of generated code !
|
||||
//}}AFX_MSG
|
||||
DECLARE_MESSAGE_MAP()
|
||||
};
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
//{{AFX_INSERT_LOCATION}}
|
||||
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
|
||||
|
||||
#endif // !defined(AFX_REGMOZCTL_H__C7C0A786_F424_11D2_A27B_000000000000__INCLUDED_)
|
||||
205
mozilla/embedding/browser/activex/tests/RegMozCtl/RegMozCtl.rc
Normal file
@@ -0,0 +1,205 @@
|
||||
//Microsoft Developer Studio generated resource script.
|
||||
//
|
||||
#include "resource.h"
|
||||
|
||||
#define APSTUDIO_READONLY_SYMBOLS
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Generated from the TEXTINCLUDE 2 resource.
|
||||
//
|
||||
#include "afxres.h"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#undef APSTUDIO_READONLY_SYMBOLS
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// English (U.S.) resources
|
||||
|
||||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
|
||||
#ifdef _WIN32
|
||||
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||
#pragma code_page(1252)
|
||||
#endif //_WIN32
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Dialog
|
||||
//
|
||||
|
||||
IDD_REGMOZCTL_DIALOG DIALOGEX 0, 0, 210, 199
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
EXSTYLE WS_EX_APPWINDOW
|
||||
CAPTION "RegMozCtl"
|
||||
FONT 8, "MS Sans Serif"
|
||||
BEGIN
|
||||
ICON IDI_MOZILLA,IDC_STATIC,7,7,20,20
|
||||
LTEXT "This application registers/deregisters the Mozilla Control and ensures that its dependent DLLs are listed as SHARED so that they can be found when the control is used by other applications.",
|
||||
IDC_STATIC,34,7,169,35
|
||||
LTEXT "You must choose the directory containing the Mozilla control and click on the Register or Deregister as appropriate.",
|
||||
IDC_STATIC,7,47,196,17
|
||||
EDITTEXT IDC_MOZILLADIR,7,70,182,14,ES_AUTOHSCROLL
|
||||
PUSHBUTTON "...",IDC_PICKDIR,190,70,13,14
|
||||
LTEXT "Now choose the component registry file and component directory the control uses or let RegMozCtl try to guess correct values for you.",
|
||||
IDC_STATIC,7,89,196,27
|
||||
EDITTEXT IDC_COMPONENTFILE,7,134,182,14,ES_AUTOHSCROLL |
|
||||
WS_DISABLED
|
||||
PUSHBUTTON "...",IDC_PICKCOMPONENTFILE,190,134,13,14,WS_DISABLED
|
||||
EDITTEXT IDC_COMPONENTPATH,7,157,182,14,ES_AUTOHSCROLL |
|
||||
WS_DISABLED
|
||||
PUSHBUTTON "...",IDC_PICKCOMPONENTPATH,190,157,13,14,WS_DISABLED
|
||||
DEFPUSHBUTTON "&Register",IDC_REGISTER,7,178,50,14
|
||||
PUSHBUTTON "&Unregister",IDC_UNREGISTER,80,178,50,14
|
||||
PUSHBUTTON "&Close",IDCANCEL,153,178,50,14
|
||||
CONTROL "Automatic",IDC_AUTOMATIC,"Button",BS_AUTOCHECKBOX |
|
||||
WS_TABSTOP,7,119,46,10
|
||||
END
|
||||
|
||||
|
||||
#ifndef _MAC
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Version
|
||||
//
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 1,0,0,1
|
||||
PRODUCTVERSION 1,0,0,1
|
||||
FILEFLAGSMASK 0x3fL
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS 0x1L
|
||||
#else
|
||||
FILEFLAGS 0x0L
|
||||
#endif
|
||||
FILEOS 0x4L
|
||||
FILETYPE 0x1L
|
||||
FILESUBTYPE 0x0L
|
||||
BEGIN
|
||||
BLOCK "StringFileInfo"
|
||||
BEGIN
|
||||
BLOCK "040904B0"
|
||||
BEGIN
|
||||
VALUE "CompanyName", "\0"
|
||||
VALUE "FileDescription", "RegMozCtl MFC Application\0"
|
||||
VALUE "FileVersion", "1, 0, 0, 1\0"
|
||||
VALUE "InternalName", "RegMozCtl\0"
|
||||
VALUE "LegalCopyright", "Copyright (C) 1999\0"
|
||||
VALUE "LegalTrademarks", "\0"
|
||||
VALUE "OriginalFilename", "RegMozCtl.EXE\0"
|
||||
VALUE "ProductName", "RegMozCtl Application\0"
|
||||
VALUE "ProductVersion", "1, 0, 0, 1\0"
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
BEGIN
|
||||
VALUE "Translation", 0x409, 1200
|
||||
END
|
||||
END
|
||||
|
||||
#endif // !_MAC
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// DESIGNINFO
|
||||
//
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
GUIDELINES DESIGNINFO DISCARDABLE
|
||||
BEGIN
|
||||
IDD_REGMOZCTL_DIALOG, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 203
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 192
|
||||
END
|
||||
END
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
#endif // English (U.S.) resources
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// English (U.K.) resources
|
||||
|
||||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENG)
|
||||
#ifdef _WIN32
|
||||
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_UK
|
||||
#pragma code_page(1252)
|
||||
#endif //_WIN32
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// TEXTINCLUDE
|
||||
//
|
||||
|
||||
1 TEXTINCLUDE DISCARDABLE
|
||||
BEGIN
|
||||
"resource.h\0"
|
||||
END
|
||||
|
||||
2 TEXTINCLUDE DISCARDABLE
|
||||
BEGIN
|
||||
"#include ""afxres.h""\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
3 TEXTINCLUDE DISCARDABLE
|
||||
BEGIN
|
||||
"#define _AFX_NO_SPLITTER_RESOURCES\r\n"
|
||||
"#define _AFX_NO_OLE_RESOURCES\r\n"
|
||||
"#define _AFX_NO_TRACKER_RESOURCES\r\n"
|
||||
"#define _AFX_NO_PROPERTY_RESOURCES\r\n"
|
||||
"\r\n"
|
||||
"#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r\n"
|
||||
"#ifdef _WIN32\r\n"
|
||||
"LANGUAGE 9, 1\r\n"
|
||||
"#pragma code_page(1252)\r\n"
|
||||
"#endif //_WIN32\r\n"
|
||||
"#include ""res\\RegMozCtl.rc2"" // non-Microsoft Visual C++ edited resources\r\n"
|
||||
"#include ""afxres.rc"" // Standard components\r\n"
|
||||
"#endif\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Icon
|
||||
//
|
||||
|
||||
// Icon with lowest ID value placed first to ensure application icon
|
||||
// remains consistent on all systems.
|
||||
IDR_MAINFRAME ICON DISCARDABLE "res\\RegMozCtl.ico"
|
||||
IDI_MOZILLA ICON DISCARDABLE "MozillaBrowser.ico"
|
||||
#endif // English (U.K.) resources
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
|
||||
#ifndef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Generated from the TEXTINCLUDE 3 resource.
|
||||
//
|
||||
#define _AFX_NO_SPLITTER_RESOURCES
|
||||
#define _AFX_NO_OLE_RESOURCES
|
||||
#define _AFX_NO_TRACKER_RESOURCES
|
||||
#define _AFX_NO_PROPERTY_RESOURCES
|
||||
|
||||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
|
||||
#ifdef _WIN32
|
||||
LANGUAGE 9, 1
|
||||
#pragma code_page(1252)
|
||||
#endif //_WIN32
|
||||
#include "res\RegMozCtl.rc2" // non-Microsoft Visual C++ edited resources
|
||||
#include "afxres.rc" // Standard components
|
||||
#endif
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#endif // not APSTUDIO_INVOKED
|
||||
|
||||
@@ -0,0 +1,337 @@
|
||||
// RegMozCtlDlg.cpp : implementation file
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "RegMozCtl.h"
|
||||
#include "RegMozCtlDlg.h"
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define new DEBUG_NEW
|
||||
#undef THIS_FILE
|
||||
static char THIS_FILE[] = __FILE__;
|
||||
#endif
|
||||
|
||||
#define MOZ_CONTROL_REG_KEY _T("Software\\Mozilla\\")
|
||||
#define MOZ_CONTROL_REG_VALUE_DIR _T("Dir")
|
||||
#define MOZ_CONTROL_REG_VALUE_COMPONENT_PATH _T("ComponentPath")
|
||||
#define MOZ_CONTROL_REG_VALUE_COMPONENT_FILE _T("ComponentFile")
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CRegMozCtlDlg dialog
|
||||
|
||||
CRegMozCtlDlg::CRegMozCtlDlg(CWnd* pParent /*=NULL*/)
|
||||
: CDialog(CRegMozCtlDlg::IDD, pParent)
|
||||
{
|
||||
//{{AFX_DATA_INIT(CRegMozCtlDlg)
|
||||
m_szMozillaDir = _T("");
|
||||
m_szComponentPath = _T("");
|
||||
m_szComponentFile = _T("");
|
||||
m_bAutomatic = FALSE;
|
||||
//}}AFX_DATA_INIT
|
||||
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
|
||||
m_hIcon = AfxGetApp()->LoadIcon(IDI_MOZILLA);
|
||||
|
||||
m_bAutomatic = TRUE;
|
||||
GetCurrentDirectory(1024, m_szMozillaDir.GetBuffer(1024));
|
||||
m_szMozillaDir.ReleaseBuffer();
|
||||
}
|
||||
|
||||
void CRegMozCtlDlg::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
//{{AFX_DATA_MAP(CRegMozCtlDlg)
|
||||
DDX_Control(pDX, IDC_COMPONENTPATH, m_edtComponentPath);
|
||||
DDX_Control(pDX, IDC_COMPONENTFILE, m_edtComponentFile);
|
||||
DDX_Control(pDX, IDC_PICKCOMPONENTPATH, m_btnPickComponentPath);
|
||||
DDX_Control(pDX, IDC_PICKCOMPONENTFILE, m_btnPickComponentFile);
|
||||
DDX_Text(pDX, IDC_MOZILLADIR, m_szMozillaDir);
|
||||
DDX_Text(pDX, IDC_COMPONENTPATH, m_szComponentPath);
|
||||
DDX_Text(pDX, IDC_COMPONENTFILE, m_szComponentFile);
|
||||
DDX_Check(pDX, IDC_AUTOMATIC, m_bAutomatic);
|
||||
//}}AFX_DATA_MAP
|
||||
}
|
||||
|
||||
BEGIN_MESSAGE_MAP(CRegMozCtlDlg, CDialog)
|
||||
//{{AFX_MSG_MAP(CRegMozCtlDlg)
|
||||
ON_WM_PAINT()
|
||||
ON_WM_QUERYDRAGICON()
|
||||
ON_BN_CLICKED(IDC_REGISTER, OnRegister)
|
||||
ON_BN_CLICKED(IDC_UNREGISTER, OnUnregister)
|
||||
ON_BN_CLICKED(IDC_PICKDIR, OnPickDir)
|
||||
ON_BN_CLICKED(IDC_PICKCOMPONENTFILE, OnPickComponentFile)
|
||||
ON_BN_CLICKED(IDC_PICKCOMPONENTPATH, OnPickComponentPath)
|
||||
ON_BN_CLICKED(IDC_AUTOMATIC, OnAutomatic)
|
||||
//}}AFX_MSG_MAP
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CRegMozCtlDlg message handlers
|
||||
|
||||
BOOL CRegMozCtlDlg::OnInitDialog()
|
||||
{
|
||||
// Set the icon for this dialog. The framework does this automatically
|
||||
// when the application's main window is not a dialog
|
||||
SetIcon(m_hIcon, TRUE); // Set big icon
|
||||
SetIcon(m_hIcon, FALSE); // Set small icon
|
||||
|
||||
// Get values from the registry
|
||||
TCHAR szValue[1024];
|
||||
DWORD dwSize = sizeof(szValue) / sizeof(szValue[0]);
|
||||
CRegKey cKey;
|
||||
cKey.Create(HKEY_LOCAL_MACHINE, MOZ_CONTROL_REG_KEY);
|
||||
|
||||
memset(szValue, 0, sizeof(szValue));
|
||||
if (cKey.QueryValue(szValue, MOZ_CONTROL_REG_VALUE_COMPONENT_PATH, &dwSize) == ERROR_SUCCESS)
|
||||
{
|
||||
m_szComponentPath = CString(szValue);
|
||||
}
|
||||
|
||||
dwSize = sizeof(szValue) / sizeof(szValue[0]);
|
||||
memset(szValue, 0, sizeof(szValue));
|
||||
if (cKey.QueryValue(szValue, MOZ_CONTROL_REG_VALUE_COMPONENT_FILE, &dwSize) == ERROR_SUCCESS)
|
||||
{
|
||||
m_szComponentFile = CString(szValue);
|
||||
}
|
||||
|
||||
dwSize = sizeof(szValue) / sizeof(szValue[0]);
|
||||
memset(szValue, 0, sizeof(szValue));
|
||||
if (cKey.QueryValue(szValue, MOZ_CONTROL_REG_VALUE_DIR, &dwSize) == ERROR_SUCCESS)
|
||||
{
|
||||
m_szMozillaDir = CString(szValue);
|
||||
}
|
||||
|
||||
CDialog::OnInitDialog();
|
||||
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
}
|
||||
|
||||
// If you add a minimize button to your dialog, you will need the code below
|
||||
// to draw the icon. For MFC applications using the document/view model,
|
||||
// this is automatically done for you by the framework.
|
||||
|
||||
void CRegMozCtlDlg::OnPaint()
|
||||
{
|
||||
if (IsIconic())
|
||||
{
|
||||
CPaintDC dc(this); // device context for painting
|
||||
|
||||
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
|
||||
|
||||
// Center icon in client rectangle
|
||||
int cxIcon = GetSystemMetrics(SM_CXICON);
|
||||
int cyIcon = GetSystemMetrics(SM_CYICON);
|
||||
CRect rect;
|
||||
GetClientRect(&rect);
|
||||
int x = (rect.Width() - cxIcon + 1) / 2;
|
||||
int y = (rect.Height() - cyIcon + 1) / 2;
|
||||
|
||||
// Draw the icon
|
||||
dc.DrawIcon(x, y, m_hIcon);
|
||||
}
|
||||
else
|
||||
{
|
||||
CDialog::OnPaint();
|
||||
}
|
||||
}
|
||||
|
||||
// The system calls this to obtain the cursor to display while the user drags
|
||||
// the minimized window.
|
||||
HCURSOR CRegMozCtlDlg::OnQueryDragIcon()
|
||||
{
|
||||
return (HCURSOR) m_hIcon;
|
||||
}
|
||||
|
||||
void CRegMozCtlDlg::OnRegister()
|
||||
{
|
||||
RegisterMozillaControl(TRUE);
|
||||
}
|
||||
|
||||
void CRegMozCtlDlg::OnUnregister()
|
||||
{
|
||||
RegisterMozillaControl(FALSE);
|
||||
}
|
||||
|
||||
void CRegMozCtlDlg::RegisterMozillaControl(BOOL bRegister)
|
||||
{
|
||||
UpdateData();
|
||||
|
||||
CFileFind cFind;
|
||||
CString szFile;
|
||||
CString szPath;
|
||||
|
||||
SetCurrentDirectory(m_szMozillaDir);
|
||||
|
||||
CRegKey cKey;
|
||||
if (cKey.Open(HKEY_LOCAL_MACHINE, _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\SharedDlls")) != ERROR_SUCCESS)
|
||||
{
|
||||
AfxMessageBox(_T("Can't open registry key \"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\SharedDlls\""));
|
||||
return;
|
||||
}
|
||||
|
||||
// Iterate through directory registering each DLL as a shared DLL
|
||||
BOOL bWorking = cFind.FindFile("*.dll");
|
||||
while (bWorking)
|
||||
{
|
||||
bWorking = cFind.FindNextFile();
|
||||
szFile = cFind.GetFileName();
|
||||
szPath = m_szMozillaDir + CString(_T("\\")) + szFile;
|
||||
if (bRegister)
|
||||
{
|
||||
cKey.SetValue(1, szPath);
|
||||
}
|
||||
else
|
||||
{
|
||||
cKey.DeleteValue(szPath);
|
||||
}
|
||||
}
|
||||
cKey.Close();
|
||||
|
||||
cKey.Create(HKEY_LOCAL_MACHINE, MOZ_CONTROL_REG_KEY);
|
||||
cKey.SetValue(m_szMozillaDir, MOZ_CONTROL_REG_VALUE_DIR);
|
||||
cKey.Close();
|
||||
|
||||
// Now register the mozilla control
|
||||
CString szMozCtl = m_szMozillaDir + CString(_T("\\npmozctl.dll"));
|
||||
HINSTANCE hMod = LoadLibrary(szMozCtl);
|
||||
if (hMod == NULL)
|
||||
{
|
||||
AfxMessageBox(_T("Can't find npmozctl.dll in current directory"));
|
||||
}
|
||||
FARPROC pfn = GetProcAddress(hMod, bRegister ? _T("DllRegisterServer") : _T("DllUnregisterServer"));
|
||||
if (pfn)
|
||||
{
|
||||
pfn();
|
||||
}
|
||||
FreeLibrary(hMod);
|
||||
|
||||
AfxMessageBox(bRegister ? _T("Register completed") : _T("Unregister completed"));
|
||||
}
|
||||
|
||||
void CRegMozCtlDlg::OnPickDir()
|
||||
{
|
||||
BROWSEINFO bi;
|
||||
TCHAR szFolder[MAX_PATH + 1];
|
||||
|
||||
memset(szFolder, 0, sizeof(szFolder));
|
||||
|
||||
memset(&bi, 0, sizeof(bi));
|
||||
bi.hwndOwner = GetSafeHwnd();
|
||||
bi.pidlRoot = NULL;
|
||||
bi.pszDisplayName = szFolder;
|
||||
bi.lpszTitle = _T("Pick a folder to scan");
|
||||
|
||||
// Open the folder browser dialog
|
||||
LPITEMIDLIST pItemList = SHBrowseForFolder(&bi);
|
||||
if (pItemList)
|
||||
{
|
||||
IMalloc *pShellAllocator = NULL;
|
||||
|
||||
SHGetMalloc(&pShellAllocator);
|
||||
if (pShellAllocator)
|
||||
{
|
||||
char szPath[MAX_PATH + 1];
|
||||
|
||||
if (SHGetPathFromIDList(pItemList, szPath))
|
||||
{
|
||||
// Chop off the end path separator
|
||||
int nPathSize = strlen(szPath);
|
||||
if (nPathSize > 0)
|
||||
{
|
||||
if (szPath[nPathSize - 1] == '\\')
|
||||
{
|
||||
szPath[nPathSize - 1] = '\0';
|
||||
}
|
||||
}
|
||||
|
||||
m_szMozillaDir = CString(szPath);
|
||||
if (m_bAutomatic)
|
||||
{
|
||||
m_szComponentPath = m_szMozillaDir + "\\components";
|
||||
m_szComponentFile = m_szMozillaDir + "\\component.reg";
|
||||
}
|
||||
|
||||
UpdateData(FALSE);
|
||||
}
|
||||
|
||||
pShellAllocator->Free(pItemList);
|
||||
pShellAllocator->Release();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CRegMozCtlDlg::OnPickComponentFile()
|
||||
{
|
||||
CFileDialog dlg(TRUE, NULL, m_szComponentFile);
|
||||
if (dlg.DoModal() == IDOK)
|
||||
{
|
||||
m_szComponentFile = dlg.GetPathName();
|
||||
UpdateData(FALSE);
|
||||
}
|
||||
}
|
||||
|
||||
void CRegMozCtlDlg::OnPickComponentPath()
|
||||
{
|
||||
BROWSEINFO bi;
|
||||
TCHAR szFolder[MAX_PATH + 1];
|
||||
|
||||
memset(szFolder, 0, sizeof(szFolder));
|
||||
|
||||
memset(&bi, 0, sizeof(bi));
|
||||
bi.hwndOwner = GetSafeHwnd();
|
||||
bi.pidlRoot = NULL;
|
||||
bi.pszDisplayName = szFolder;
|
||||
bi.lpszTitle = _T("Pick a folder to scan");
|
||||
|
||||
// Open the folder browser dialog
|
||||
LPITEMIDLIST pItemList = SHBrowseForFolder(&bi);
|
||||
if (pItemList)
|
||||
{
|
||||
IMalloc *pShellAllocator = NULL;
|
||||
|
||||
SHGetMalloc(&pShellAllocator);
|
||||
if (pShellAllocator)
|
||||
{
|
||||
char szPath[MAX_PATH + 1];
|
||||
|
||||
if (SHGetPathFromIDList(pItemList, szPath))
|
||||
{
|
||||
// Chop off the end path separator
|
||||
int nPathSize = strlen(szPath);
|
||||
if (nPathSize > 0)
|
||||
{
|
||||
if (szPath[nPathSize - 1] == '\\')
|
||||
{
|
||||
szPath[nPathSize - 1] = '\0';
|
||||
}
|
||||
}
|
||||
|
||||
m_szComponentPath = CString(szPath);
|
||||
UpdateData(FALSE);
|
||||
}
|
||||
|
||||
pShellAllocator->Free(pItemList);
|
||||
pShellAllocator->Release();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CRegMozCtlDlg::OnAutomatic()
|
||||
{
|
||||
UpdateData(TRUE);
|
||||
m_edtComponentFile.EnableWindow(!m_bAutomatic);
|
||||
m_btnPickComponentFile.EnableWindow(!m_bAutomatic);
|
||||
m_edtComponentPath.EnableWindow(!m_bAutomatic);
|
||||
m_btnPickComponentPath.EnableWindow(!m_bAutomatic);
|
||||
}
|
||||
|
||||
CString CRegMozCtlDlg::GetSystemPath()
|
||||
{
|
||||
// TODO
|
||||
return _T("");
|
||||
}
|
||||
|
||||
BOOL CRegMozCtlDlg::SetSystemPath(const CString &szNewPath)
|
||||
{
|
||||
// TODO
|
||||
return TRUE;
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
// RegMozCtlDlg.h : header file
|
||||
//
|
||||
|
||||
#if !defined(AFX_REGMOZCTLDLG_H__C7C0A788_F424_11D2_A27B_000000000000__INCLUDED_)
|
||||
#define AFX_REGMOZCTLDLG_H__C7C0A788_F424_11D2_A27B_000000000000__INCLUDED_
|
||||
|
||||
#if _MSC_VER > 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER > 1000
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CRegMozCtlDlg dialog
|
||||
|
||||
class CRegMozCtlDlg : public CDialog
|
||||
{
|
||||
// Construction
|
||||
public:
|
||||
CRegMozCtlDlg(CWnd* pParent = NULL); // standard constructor
|
||||
|
||||
// Dialog Data
|
||||
//{{AFX_DATA(CRegMozCtlDlg)
|
||||
enum { IDD = IDD_REGMOZCTL_DIALOG };
|
||||
CEdit m_edtComponentPath;
|
||||
CEdit m_edtComponentFile;
|
||||
CButton m_btnPickComponentPath;
|
||||
CButton m_btnPickComponentFile;
|
||||
CString m_szMozillaDir;
|
||||
CString m_szComponentPath;
|
||||
CString m_szComponentFile;
|
||||
BOOL m_bAutomatic;
|
||||
//}}AFX_DATA
|
||||
|
||||
// ClassWizard generated virtual function overrides
|
||||
//{{AFX_VIRTUAL(CRegMozCtlDlg)
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
|
||||
//}}AFX_VIRTUAL
|
||||
|
||||
// Implementation
|
||||
protected:
|
||||
HICON m_hIcon;
|
||||
|
||||
// Generated message map functions
|
||||
//{{AFX_MSG(CRegMozCtlDlg)
|
||||
virtual BOOL OnInitDialog();
|
||||
afx_msg void OnPaint();
|
||||
afx_msg HCURSOR OnQueryDragIcon();
|
||||
afx_msg void OnRegister();
|
||||
afx_msg void OnUnregister();
|
||||
afx_msg void OnPickDir();
|
||||
afx_msg void OnPickComponentFile();
|
||||
afx_msg void OnPickComponentPath();
|
||||
afx_msg void OnAutomatic();
|
||||
//}}AFX_MSG
|
||||
DECLARE_MESSAGE_MAP()
|
||||
|
||||
void RegisterMozillaControl(BOOL bRegister);
|
||||
BOOL SetSystemPath(const CString &szNewPath);
|
||||
CString GetSystemPath();
|
||||
};
|
||||
|
||||
//{{AFX_INSERT_LOCATION}}
|
||||
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
|
||||
|
||||
#endif // !defined(AFX_REGMOZCTLDLG_H__C7C0A788_F424_11D2_A27B_000000000000__INCLUDED_)
|
||||
@@ -0,0 +1,8 @@
|
||||
// stdafx.cpp : source file that includes just the standard includes
|
||||
// RegMozCtl.pch will be the pre-compiled header
|
||||
// stdafx.obj will contain the pre-compiled type information
|
||||
|
||||
#include "stdafx.h"
|
||||
|
||||
|
||||
|
||||
29
mozilla/embedding/browser/activex/tests/RegMozCtl/StdAfx.h
Normal file
@@ -0,0 +1,29 @@
|
||||
// stdafx.h : include file for standard system include files,
|
||||
// or project specific include files that are used frequently, but
|
||||
// are changed infrequently
|
||||
//
|
||||
|
||||
#if !defined(AFX_STDAFX_H__C7C0A78A_F424_11D2_A27B_000000000000__INCLUDED_)
|
||||
#define AFX_STDAFX_H__C7C0A78A_F424_11D2_A27B_000000000000__INCLUDED_
|
||||
|
||||
#if _MSC_VER > 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER > 1000
|
||||
|
||||
#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers
|
||||
|
||||
#include <afxwin.h> // MFC core and standard components
|
||||
#include <afxext.h> // MFC extensions
|
||||
#include <afxdisp.h> // MFC Automation classes
|
||||
#include <afxdtctl.h> // MFC support for Internet Explorer 4 Common Controls
|
||||
#ifndef _AFX_NO_AFXCMN_SUPPORT
|
||||
#include <afxcmn.h> // MFC support for Windows Common Controls
|
||||
#endif // _AFX_NO_AFXCMN_SUPPORT
|
||||
#include <atlbase.h>
|
||||
|
||||
|
||||
|
||||
//{{AFX_INSERT_LOCATION}}
|
||||
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
|
||||
|
||||
#endif // !defined(AFX_STDAFX_H__C7C0A78A_F424_11D2_A27B_000000000000__INCLUDED_)
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
@@ -0,0 +1,13 @@
|
||||
//
|
||||
// REGMOZCTL.RC2 - resources Microsoft Visual C++ does not edit directly
|
||||
//
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
#error this file is not editable by Microsoft Visual C++
|
||||
#endif //APSTUDIO_INVOKED
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Add manually edited resources here...
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
27
mozilla/embedding/browser/activex/tests/RegMozCtl/resource.h
Normal file
@@ -0,0 +1,27 @@
|
||||
//{{NO_DEPENDENCIES}}
|
||||
// Microsoft Developer Studio generated include file.
|
||||
// Used by RegMozCtl.rc
|
||||
//
|
||||
#define IDD_REGMOZCTL_DIALOG 102
|
||||
#define IDR_MAINFRAME 128
|
||||
#define IDI_MOZILLA 130
|
||||
#define IDC_REGISTER 1001
|
||||
#define IDC_UNREGISTER 1002
|
||||
#define IDC_MOZILLADIR 1003
|
||||
#define IDC_PICKDIR 1004
|
||||
#define IDC_COMPONENTFILE 1005
|
||||
#define IDC_PICKCOMPONENTFILE 1006
|
||||
#define IDC_COMPONENTPATH 1007
|
||||
#define IDC_PICKCOMPONENTPATH 1008
|
||||
#define IDC_AUTOMATIC 1009
|
||||
|
||||
// Next default values for new objects
|
||||
//
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||
#define _APS_NEXT_RESOURCE_VALUE 131
|
||||
#define _APS_NEXT_COMMAND_VALUE 32771
|
||||
#define _APS_NEXT_CONTROL_VALUE 1010
|
||||
#define _APS_NEXT_SYMED_VALUE 101
|
||||
#endif
|
||||
#endif
|
||||
846
mozilla/embedding/browser/activex/tests/cbrowse/CBrowseDlg.cpp
Normal file
@@ -0,0 +1,846 @@
|
||||
// CBrowseDlg.cpp : implementation file
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
|
||||
#include "cbrowse.h"
|
||||
#include "CBrowseDlg.h"
|
||||
#include "ControlEventSink.h"
|
||||
#include "..\..\DHTMLCmdIds.h"
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define new DEBUG_NEW
|
||||
#undef THIS_FILE
|
||||
static char THIS_FILE[] = __FILE__;
|
||||
#endif
|
||||
|
||||
#include <math.h>
|
||||
#include <fpieee.h>
|
||||
#include <float.h>
|
||||
|
||||
#include <signal.h>
|
||||
|
||||
#include <stack>
|
||||
|
||||
void __cdecl fperr(int sig)
|
||||
{
|
||||
CString sError;
|
||||
sError.Format("FP Error %08x", sig);
|
||||
AfxMessageBox(sError);
|
||||
}
|
||||
|
||||
TCHAR *aURLs[] =
|
||||
{
|
||||
_T("http://whippy/calendar.html"),
|
||||
_T("http://www.mozilla.org"),
|
||||
_T("http://www.yahoo.com"),
|
||||
_T("http://www.netscape.com"),
|
||||
_T("http://www.microsoft.com")
|
||||
};
|
||||
|
||||
CBrowseDlg *CBrowseDlg::m_pBrowseDlg = NULL;
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CBrowseDlg dialog
|
||||
|
||||
CBrowseDlg::CBrowseDlg(CWnd* pParent /*=NULL*/)
|
||||
: CDialog(CBrowseDlg::IDD, pParent)
|
||||
{
|
||||
signal(SIGFPE, fperr);
|
||||
double x = 0.0;
|
||||
double y = 1.0/x;
|
||||
|
||||
//{{AFX_DATA_INIT(CBrowseDlg)
|
||||
m_bNewWindow = FALSE;
|
||||
//}}AFX_DATA_INIT
|
||||
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
|
||||
m_pBrowseDlg = this;
|
||||
m_pControlSite = NULL;
|
||||
m_clsid = CLSID_NULL;
|
||||
m_bUseCustomPopupMenu = FALSE;
|
||||
m_bUseCustomDropTarget = FALSE;
|
||||
}
|
||||
|
||||
void CBrowseDlg::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
//{{AFX_DATA_MAP(CBrowseDlg)
|
||||
DDX_Control(pDX, IDC_EDITMODE, m_btnEditMode);
|
||||
DDX_Control(pDX, IDC_URL, m_cmbURLs);
|
||||
DDX_Check(pDX, IDC_NEWWINDOW, m_bNewWindow);
|
||||
//}}AFX_DATA_MAP
|
||||
}
|
||||
|
||||
BEGIN_MESSAGE_MAP(CBrowseDlg, CDialog)
|
||||
//{{AFX_MSG_MAP(CBrowseDlg)
|
||||
ON_WM_PAINT()
|
||||
ON_WM_QUERYDRAGICON()
|
||||
ON_BN_CLICKED(IDC_GO, OnGo)
|
||||
ON_BN_CLICKED(IDC_BACKWARD, OnBackward)
|
||||
ON_BN_CLICKED(IDC_FORWARD, OnForward)
|
||||
ON_WM_CLOSE()
|
||||
ON_WM_DESTROY()
|
||||
ON_WM_SIZE()
|
||||
ON_BN_CLICKED(IDC_EDITMODE, OnEditMode)
|
||||
ON_COMMAND(ID_FILE_EXIT, OnFileExit)
|
||||
ON_COMMAND(ID_VIEW_GOTO_BACK, OnViewGotoBack)
|
||||
ON_COMMAND(ID_VIEW_GOTO_FORWARD, OnViewGotoForward)
|
||||
ON_COMMAND(ID_VIEW_GOTO_HOME, OnViewGotoHome)
|
||||
ON_COMMAND(ID_EDIT_COPY, OnEditCopy)
|
||||
ON_COMMAND(ID_EDIT_CUT, OnEditCut)
|
||||
ON_COMMAND(ID_EDIT_PASTE, OnEditPaste)
|
||||
ON_COMMAND(ID_HELP_ABOUT, OnHelpAbout)
|
||||
ON_UPDATE_COMMAND_UI(ID_VIEW_GOTO_BACK, OnUpdateViewGotoBack)
|
||||
ON_UPDATE_COMMAND_UI(ID_VIEW_GOTO_FORWARD, OnUpdateViewGotoForward)
|
||||
ON_COMMAND(ID_EDIT_SELECTALL, OnEditSelectAll)
|
||||
ON_COMMAND(ID_VIEW_REFRESH, OnViewRefresh)
|
||||
//}}AFX_MSG_MAP
|
||||
ON_COMMAND(IDB_BOLD, OnEditBold)
|
||||
ON_COMMAND(IDB_ITALIC, OnEditItalic)
|
||||
ON_COMMAND(IDB_UNDERLINE, OnEditUnderline)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
#define IL_CLOSEDFOLDER 0
|
||||
#define IL_OPENFOLDER 1
|
||||
#define IL_TEST 2
|
||||
#define IL_TESTFAILED 3
|
||||
#define IL_TESTPASSED 4
|
||||
#define IL_TESTPARTIAL 5
|
||||
#define IL_NODE IL_TEST
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CBrowseDlg message handlers
|
||||
|
||||
BOOL CBrowseDlg::OnInitDialog()
|
||||
{
|
||||
CDialog::OnInitDialog();
|
||||
|
||||
CWinApp *pApp = AfxGetApp();
|
||||
m_szTestURL = pApp->GetProfileString(SECTION_TEST, KEY_TESTURL, KEY_TESTURL_DEFAULTVALUE);
|
||||
m_szTestCGI = pApp->GetProfileString(SECTION_TEST, KEY_TESTCGI, KEY_TESTCGI_DEFAULTVALUE);
|
||||
|
||||
// Set the icon for this dialog. The framework does this automatically
|
||||
// when the application's main window is not a dialog
|
||||
SetIcon(m_hIcon, TRUE); // Set big icon
|
||||
SetIcon(m_hIcon, FALSE); // Set small icon
|
||||
|
||||
CRect rcTabMarker;
|
||||
GetDlgItem(IDC_TAB_MARKER)->GetWindowRect(&rcTabMarker);
|
||||
ScreenToClient(rcTabMarker);
|
||||
// GetDlgItem(IDC_TAB_MARKER)->DestroyWindow();
|
||||
|
||||
m_dlgPropSheet.AddPage(&m_TabMessages);
|
||||
m_dlgPropSheet.AddPage(&m_TabTests);
|
||||
m_dlgPropSheet.AddPage(&m_TabDOM);
|
||||
|
||||
m_TabMessages.m_pBrowseDlg = this;
|
||||
m_TabTests.m_pBrowseDlg = this;
|
||||
m_TabDOM.m_pBrowseDlg = this;
|
||||
|
||||
m_dlgPropSheet.Create(this, WS_CHILD | WS_VISIBLE, 0);
|
||||
m_dlgPropSheet.ModifyStyleEx (0, WS_EX_CONTROLPARENT);
|
||||
m_dlgPropSheet.ModifyStyle( 0, WS_TABSTOP );
|
||||
m_dlgPropSheet.SetWindowPos( NULL, rcTabMarker.left-7, rcTabMarker.top-7, 0, 0, SWP_NOZORDER | SWP_NOSIZE | SWP_NOACTIVATE );
|
||||
|
||||
// Image list
|
||||
m_cImageList.Create(16, 16, ILC_COLOR | ILC_MASK, 0, 10);
|
||||
m_cImageList.Add(AfxGetApp()->LoadIcon(IDI_CLOSEDFOLDER));
|
||||
m_cImageList.Add(AfxGetApp()->LoadIcon(IDI_OPENFOLDER));
|
||||
m_cImageList.Add(AfxGetApp()->LoadIcon(IDI_TEST));
|
||||
m_cImageList.Add(AfxGetApp()->LoadIcon(IDI_TESTFAILED));
|
||||
m_cImageList.Add(AfxGetApp()->LoadIcon(IDI_TESTPASSED));
|
||||
m_cImageList.Add(AfxGetApp()->LoadIcon(IDI_TESTPARTIAL));
|
||||
|
||||
// Set up the editor bar
|
||||
CRect rcEditBarMarker;
|
||||
GetDlgItem(IDC_EDITBAR_MARKER)->GetWindowRect(&rcEditBarMarker);
|
||||
ScreenToClient(rcEditBarMarker);
|
||||
GetDlgItem(IDC_EDITBAR_MARKER)->DestroyWindow();
|
||||
|
||||
m_EditBar.Create(this);
|
||||
m_EditBar.LoadToolBar(IDR_DHTMLEDIT);
|
||||
m_EditBar.SetWindowPos(&wndTop, rcEditBarMarker.left, rcEditBarMarker.top,
|
||||
rcEditBarMarker.Width(), rcEditBarMarker.Height(), SWP_SHOWWINDOW);
|
||||
|
||||
// Set up some URLs. The first couple are internal
|
||||
m_cmbURLs.AddString(m_szTestURL);
|
||||
for (int i = 0; i < sizeof(aURLs) / sizeof(aURLs[0]); i++)
|
||||
{
|
||||
m_cmbURLs.AddString(aURLs[i]);
|
||||
}
|
||||
m_cmbURLs.SetCurSel(0);
|
||||
|
||||
// Create the contained web browser
|
||||
CreateWebBrowser();
|
||||
|
||||
// Load the menu
|
||||
m_menu.LoadMenu(IDR_MAIN);
|
||||
SetMenu(&m_menu);
|
||||
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
|
||||
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
}
|
||||
|
||||
|
||||
// If you add a minimize button to your dialog, you will need the code below
|
||||
// to draw the icon. For MFC applications using the document/view model,
|
||||
// this is automatically done for you by the framework.
|
||||
|
||||
void CBrowseDlg::OnPaint()
|
||||
{
|
||||
if (IsIconic())
|
||||
{
|
||||
CPaintDC dc(this); // device context for painting
|
||||
|
||||
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
|
||||
|
||||
// Center icon in client rectangle
|
||||
int cxIcon = GetSystemMetrics(SM_CXICON);
|
||||
int cyIcon = GetSystemMetrics(SM_CYICON);
|
||||
CRect rect;
|
||||
GetClientRect(&rect);
|
||||
int x = (rect.Width() - cxIcon + 1) / 2;
|
||||
int y = (rect.Height() - cyIcon + 1) / 2;
|
||||
|
||||
// Draw the icon
|
||||
dc.DrawIcon(x, y, m_hIcon);
|
||||
}
|
||||
else
|
||||
{
|
||||
CPaintDC dc(this);
|
||||
|
||||
m_pControlSite->Draw(dc.m_hDC);
|
||||
}
|
||||
}
|
||||
|
||||
// The system calls this to obtain the cursor to display while the user drags
|
||||
// the minimized window.
|
||||
HCURSOR CBrowseDlg::OnQueryDragIcon()
|
||||
{
|
||||
return (HCURSOR) m_hIcon;
|
||||
}
|
||||
|
||||
struct EnumData
|
||||
{
|
||||
CBrowseDlg *pBrowseDlg;
|
||||
CSize sizeDelta;
|
||||
};
|
||||
|
||||
BOOL CALLBACK EnumChildProc(HWND hwnd, LPARAM lParam)
|
||||
{
|
||||
EnumData *pData = (EnumData *) lParam;
|
||||
CBrowseDlg *pThis = pData->pBrowseDlg;
|
||||
|
||||
switch (::GetDlgCtrlID(hwnd))
|
||||
{
|
||||
case IDC_BROWSER_MARKER:
|
||||
{
|
||||
CWnd *pMarker = pThis->GetDlgItem(IDC_BROWSER_MARKER);
|
||||
CRect rcMarker;
|
||||
pMarker->GetWindowRect(&rcMarker);
|
||||
pThis->ScreenToClient(rcMarker);
|
||||
|
||||
rcMarker.right += pData->sizeDelta.cx;
|
||||
rcMarker.bottom += pData->sizeDelta.cy;
|
||||
|
||||
if (rcMarker.Width() > 10 && rcMarker.Height() > 10)
|
||||
{
|
||||
pMarker->SetWindowPos(&CWnd::wndBottom, 0, 0, rcMarker.Width(), rcMarker.Height(),
|
||||
SWP_NOMOVE | SWP_NOACTIVATE | SWP_HIDEWINDOW);
|
||||
pThis->m_pControlSite->SetPosition(rcMarker);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case IDC_TAB_MARKER:
|
||||
{
|
||||
CWnd *pMarker = pThis->GetDlgItem(IDC_TAB_MARKER);
|
||||
CRect rcMarker;
|
||||
pMarker->GetWindowRect(&rcMarker);
|
||||
pThis->ScreenToClient(rcMarker);
|
||||
|
||||
rcMarker.top += pData->sizeDelta.cy;
|
||||
|
||||
if (rcMarker.top > 70)
|
||||
{
|
||||
pMarker->SetWindowPos(&CWnd::wndBottom, rcMarker.left, rcMarker.top, 0, 0,
|
||||
SWP_NOSIZE | SWP_NOACTIVATE | SWP_HIDEWINDOW);
|
||||
pThis->m_dlgPropSheet.SetWindowPos(NULL, rcMarker.left - 7, rcMarker.top - 7, 0, 0,
|
||||
SWP_NOREPOSITION | SWP_NOSIZE | SWP_NOACTIVATE);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void CBrowseDlg::OnSize(UINT nType, int cx, int cy)
|
||||
{
|
||||
CDialog::OnSize(nType, cx, cy);
|
||||
|
||||
if (m_hWnd == NULL)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
static CSize sizeOld(-1, -1);
|
||||
CSize sizeNew(cx, cy);
|
||||
|
||||
if (sizeOld.cx != -1)
|
||||
{
|
||||
EnumData data;
|
||||
data.pBrowseDlg = this;
|
||||
data.sizeDelta = sizeNew - sizeOld;
|
||||
::EnumChildWindows(GetSafeHwnd(), EnumChildProc, (LPARAM) &data);
|
||||
}
|
||||
sizeOld = sizeNew;
|
||||
}
|
||||
|
||||
HRESULT CBrowseDlg::CreateWebBrowser()
|
||||
{
|
||||
// Get the position of the browser marker
|
||||
CRect rcMarker;
|
||||
GetDlgItem(IDC_BROWSER_MARKER)->GetWindowRect(&rcMarker);
|
||||
ScreenToClient(rcMarker);
|
||||
GetDlgItem(IDC_BROWSER_MARKER)->ShowWindow(FALSE);
|
||||
|
||||
// GetDlgItem(IDC_BROWSER_MARKER)->DestroyWindow();
|
||||
|
||||
CBrowserCtlSiteInstance::CreateInstance(&m_pControlSite);
|
||||
if (m_pControlSite == NULL)
|
||||
{
|
||||
OutputString(_T("Error: could not create control site"));
|
||||
return E_OUTOFMEMORY;
|
||||
}
|
||||
|
||||
CControlEventSinkInstance *pEventSink = NULL;
|
||||
CControlEventSinkInstance::CreateInstance(&pEventSink);
|
||||
if (pEventSink == NULL)
|
||||
{
|
||||
m_pControlSite->Release();
|
||||
m_pControlSite = NULL;
|
||||
OutputString(_T("Error: could not create event sink"));
|
||||
return E_OUTOFMEMORY;
|
||||
}
|
||||
pEventSink->m_pBrowseDlg = this;
|
||||
|
||||
HRESULT hr;
|
||||
|
||||
PropertyList pl;
|
||||
m_pControlSite->AddRef();
|
||||
m_pControlSite->m_bUseCustomPopupMenu = m_bUseCustomPopupMenu;
|
||||
m_pControlSite->m_bUseCustomDropTarget = m_bUseCustomDropTarget;
|
||||
m_pControlSite->Create(m_clsid, pl);
|
||||
hr = m_pControlSite->Attach(GetSafeHwnd(), rcMarker, NULL);
|
||||
if (hr != S_OK)
|
||||
{
|
||||
OutputString(_T("Error: Cannot attach to browser control, hr = 0x%08x"), hr);
|
||||
}
|
||||
else
|
||||
{
|
||||
OutputString(_T("Sucessfully attached to browser control"));
|
||||
}
|
||||
|
||||
m_pControlSite->SetPosition(rcMarker);
|
||||
hr = m_pControlSite->Advise(pEventSink, DIID_DWebBrowserEvents2, &m_dwCookie);
|
||||
if (hr != S_OK)
|
||||
{
|
||||
OutputString(_T("Error: Cannot subscribe to DIID_DWebBrowserEvents2 events, hr = 0x%08x"), hr);
|
||||
}
|
||||
else
|
||||
{
|
||||
OutputString(_T("Sucessfully subscribed to events"));
|
||||
}
|
||||
|
||||
CComPtr<IUnknown> spUnkBrowser;
|
||||
m_pControlSite->GetControlUnknown(&spUnkBrowser);
|
||||
|
||||
CIPtr(IWebBrowser2) spWebBrowser = spUnkBrowser;
|
||||
if (spWebBrowser)
|
||||
{
|
||||
spWebBrowser->put_RegisterAsDropTarget(VARIANT_TRUE);
|
||||
}
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
|
||||
HRESULT CBrowseDlg::DestroyWebBrowser()
|
||||
{
|
||||
if (m_pControlSite)
|
||||
{
|
||||
m_pControlSite->Unadvise(DIID_DWebBrowserEvents2, m_dwCookie);
|
||||
m_pControlSite->Detach();
|
||||
m_pControlSite->Release();
|
||||
m_pControlSite = NULL;
|
||||
}
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
void CBrowseDlg::PopulateTests()
|
||||
{
|
||||
// Create the test tree
|
||||
CTreeCtrl &tc = m_TabTests.m_tcTests;
|
||||
|
||||
tc.SetImageList(&m_cImageList, TVSIL_NORMAL);
|
||||
for (int i = 0; i < nTestSets; i++)
|
||||
{
|
||||
TestSet *pTestSet = &aTestSets[i];
|
||||
HTREEITEM hParent = tc.InsertItem(pTestSet->szName, IL_CLOSEDFOLDER, IL_CLOSEDFOLDER);
|
||||
m_TabTests.m_tcTests.SetItemData(hParent, (DWORD) pTestSet);
|
||||
|
||||
if (pTestSet->pfnPopulator)
|
||||
{
|
||||
pTestSet->pfnPopulator(pTestSet);
|
||||
}
|
||||
|
||||
for (int j = 0; j < pTestSet->nTests; j++)
|
||||
{
|
||||
Test *pTest = &pTestSet->aTests[j];
|
||||
HTREEITEM hTest = tc.InsertItem(pTest->szName, IL_TEST, IL_TEST, hParent);
|
||||
if (hTest)
|
||||
{
|
||||
tc.SetItemData(hTest, (DWORD) pTest);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
HRESULT CBrowseDlg::GetWebBrowser(IWebBrowser **pWebBrowser)
|
||||
{
|
||||
if (pWebBrowser == NULL)
|
||||
{
|
||||
return E_INVALIDARG;
|
||||
}
|
||||
|
||||
*pWebBrowser = NULL;
|
||||
|
||||
if (m_pControlSite)
|
||||
{
|
||||
IUnknown *pIUnkBrowser = NULL;
|
||||
m_pControlSite->GetControlUnknown(&pIUnkBrowser);
|
||||
if (pIUnkBrowser)
|
||||
{
|
||||
pIUnkBrowser->QueryInterface(IID_IWebBrowser, (void **) pWebBrowser);
|
||||
if (*pWebBrowser)
|
||||
{
|
||||
return S_OK;
|
||||
}
|
||||
pIUnkBrowser->Release();
|
||||
}
|
||||
}
|
||||
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
void CBrowseDlg::OnGo()
|
||||
{
|
||||
UpdateData();
|
||||
|
||||
IWebBrowser *pIWebBrowser = NULL;
|
||||
if (SUCCEEDED(GetWebBrowser(&pIWebBrowser)))
|
||||
{
|
||||
CString szURL;
|
||||
m_cmbURLs.GetWindowText(szURL);
|
||||
// int nItem = m_cmbURLs.GetCurSel();
|
||||
// CString szURL = (nItem == 0) ? m_szTestURL : aURLs[nItem - 1];
|
||||
|
||||
CComVariant vFlags(m_bNewWindow ? navOpenInNewWindow : 0);
|
||||
|
||||
BSTR bstrURL = szURL.AllocSysString();
|
||||
pIWebBrowser->Navigate(bstrURL, &vFlags, NULL, NULL, NULL);
|
||||
::SysFreeString(bstrURL);
|
||||
pIWebBrowser->Release();
|
||||
}
|
||||
}
|
||||
|
||||
void CBrowseDlg::OnBackward()
|
||||
{
|
||||
IWebBrowser *pIWebBrowser = NULL;
|
||||
if (SUCCEEDED(GetWebBrowser(&pIWebBrowser)))
|
||||
{
|
||||
pIWebBrowser->GoBack();
|
||||
pIWebBrowser->Release();
|
||||
}
|
||||
}
|
||||
|
||||
void CBrowseDlg::OnForward()
|
||||
{
|
||||
IWebBrowser *pIWebBrowser = NULL;
|
||||
if (SUCCEEDED(GetWebBrowser(&pIWebBrowser)))
|
||||
{
|
||||
pIWebBrowser->GoForward();
|
||||
pIWebBrowser->Release();
|
||||
}
|
||||
}
|
||||
|
||||
void CBrowseDlg::RunTestSet(TestSet *pTestSet)
|
||||
{
|
||||
ASSERT(pTestSet);
|
||||
if (pTestSet == NULL)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
for (int j = 0; j < pTestSet->nTests; j++)
|
||||
{
|
||||
Test *pTest = &pTestSet->aTests[j];
|
||||
RunTest(pTest);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
TestResult CBrowseDlg::RunTest(Test *pTest)
|
||||
{
|
||||
ASSERT(pTest);
|
||||
TestResult nResult = trFailed;
|
||||
|
||||
CString szMsg;
|
||||
szMsg.Format(_T("Running test \"%s\""), pTest->szName);
|
||||
OutputString(szMsg);
|
||||
|
||||
if (pTest && pTest->pfn)
|
||||
{
|
||||
BrowserInfo cInfo;
|
||||
|
||||
cInfo.pTest = pTest;
|
||||
cInfo.clsid = m_clsid;
|
||||
cInfo.pControlSite = m_pControlSite;
|
||||
cInfo.pIUnknown = NULL;
|
||||
cInfo.pBrowseDlg = this;
|
||||
cInfo.szTestURL = m_szTestURL;
|
||||
cInfo.szTestCGI = m_szTestCGI;
|
||||
if (cInfo.pControlSite)
|
||||
{
|
||||
cInfo.pControlSite->GetControlUnknown(&cInfo.pIUnknown);
|
||||
}
|
||||
nResult = pTest->pfn(cInfo);
|
||||
pTest->nLastResult = nResult;
|
||||
if (cInfo.pIUnknown)
|
||||
{
|
||||
cInfo.pIUnknown->Release();
|
||||
}
|
||||
}
|
||||
|
||||
switch (nResult)
|
||||
{
|
||||
case trFailed:
|
||||
OutputString(_T("Test failed"));
|
||||
break;
|
||||
case trPassed:
|
||||
OutputString(_T("Test passed"));
|
||||
break;
|
||||
case trPartial:
|
||||
OutputString(_T("Test partial"));
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return nResult;
|
||||
}
|
||||
|
||||
void CBrowseDlg::OutputString(const TCHAR *szMessage, ...)
|
||||
{
|
||||
if (m_pBrowseDlg == NULL)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
TCHAR szBuffer[256];
|
||||
|
||||
va_list cArgs;
|
||||
va_start(cArgs, szMessage);
|
||||
_vstprintf(szBuffer, szMessage, cArgs);
|
||||
va_end(cArgs);
|
||||
|
||||
CString szOutput;
|
||||
szOutput.Format(_T("%s"), szBuffer);
|
||||
|
||||
m_TabMessages.m_lbMessages.AddString(szOutput);
|
||||
m_TabMessages.m_lbMessages.SetTopIndex(m_TabMessages.m_lbMessages.GetCount() - 1);
|
||||
}
|
||||
|
||||
void CBrowseDlg::UpdateTest(HTREEITEM hItem, TestResult nResult)
|
||||
{
|
||||
if (nResult == trPassed)
|
||||
{
|
||||
m_TabTests.m_tcTests.SetItemImage(hItem, IL_TESTPASSED, IL_TESTPASSED);
|
||||
}
|
||||
else if (nResult == trFailed)
|
||||
{
|
||||
m_TabTests.m_tcTests.SetItemImage(hItem, IL_TESTFAILED, IL_TESTFAILED);
|
||||
}
|
||||
else if (nResult == trPartial)
|
||||
{
|
||||
m_TabTests.m_tcTests.SetItemImage(hItem, IL_TESTPARTIAL, IL_TESTPARTIAL);
|
||||
}
|
||||
}
|
||||
|
||||
void CBrowseDlg::UpdateTestSet(HTREEITEM hItem)
|
||||
{
|
||||
// Examine the results
|
||||
HTREEITEM hTest = m_TabTests.m_tcTests.GetNextItem(hItem, TVGN_CHILD);
|
||||
while (hTest)
|
||||
{
|
||||
Test *pTest = (Test *) m_TabTests.m_tcTests.GetItemData(hTest);
|
||||
UpdateTest(hTest, pTest->nLastResult);
|
||||
hTest = m_TabTests.m_tcTests.GetNextItem(hTest, TVGN_NEXT);
|
||||
}
|
||||
}
|
||||
|
||||
void CBrowseDlg::OnRunTest()
|
||||
{
|
||||
HTREEITEM hItem = m_TabTests.m_tcTests.GetNextItem(NULL, TVGN_FIRSTVISIBLE);
|
||||
while (hItem)
|
||||
{
|
||||
UINT nState = m_TabTests.m_tcTests.GetItemState(hItem, TVIS_SELECTED);
|
||||
if (!(nState & TVIS_SELECTED))
|
||||
{
|
||||
hItem = m_TabTests.m_tcTests.GetNextItem(hItem, TVGN_NEXTVISIBLE);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (m_TabTests.m_tcTests.ItemHasChildren(hItem))
|
||||
{
|
||||
// Run complete set of tests
|
||||
TestSet *pTestSet = (TestSet *) m_TabTests.m_tcTests.GetItemData(hItem);
|
||||
RunTestSet(pTestSet);
|
||||
UpdateTestSet(hItem);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Find the test
|
||||
Test *pTest = (Test *) m_TabTests.m_tcTests.GetItemData(hItem);
|
||||
TestResult nResult = RunTest(pTest);
|
||||
UpdateTest(hItem, nResult);
|
||||
}
|
||||
|
||||
hItem = m_TabTests.m_tcTests.GetNextItem(hItem, TVGN_NEXTVISIBLE);
|
||||
}
|
||||
}
|
||||
|
||||
struct _ElementPos
|
||||
{
|
||||
HTREEITEM m_htiParent;
|
||||
CIPtr(IHTMLElementCollection) m_cpElementCollection;
|
||||
int m_nIndex;
|
||||
|
||||
_ElementPos(HTREEITEM htiParent, IHTMLElementCollection *pElementCollection, int nIndex)
|
||||
{
|
||||
m_htiParent = htiParent;
|
||||
m_cpElementCollection = pElementCollection;
|
||||
m_nIndex = nIndex;
|
||||
}
|
||||
_ElementPos()
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
void CBrowseDlg::OnRefreshDOM()
|
||||
{
|
||||
m_TabDOM.m_tcDOM.DeleteAllItems();
|
||||
|
||||
std::stack<_ElementPos> cStack;
|
||||
|
||||
CComPtr<IUnknown> cpUnkPtr;
|
||||
m_pControlSite->GetControlUnknown(&cpUnkPtr);
|
||||
CIPtr(IWebBrowserApp) cpWebBrowser = cpUnkPtr;
|
||||
if (cpWebBrowser == NULL)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
CIPtr(IDispatch) cpDispDocument;
|
||||
cpWebBrowser->get_Document(&cpDispDocument);
|
||||
if (cpDispDocument == NULL)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Recurse the DOM, building a tree
|
||||
|
||||
CIPtr(IHTMLDocument2) cpDocElement = cpDispDocument;
|
||||
|
||||
CIPtr(IHTMLElementCollection) cpColl;
|
||||
HRESULT hr = cpDocElement->get_all( &cpColl );
|
||||
|
||||
cStack.push(_ElementPos(NULL, cpColl, 0));
|
||||
while (!cStack.empty())
|
||||
{
|
||||
// Pop next position from stack
|
||||
_ElementPos pos = cStack.top();
|
||||
cStack.pop();
|
||||
|
||||
// Iterate through elemenets in collection
|
||||
LONG nElements = 0;;
|
||||
pos.m_cpElementCollection->get_length(&nElements);
|
||||
for (int i = pos.m_nIndex; i < nElements; i++ )
|
||||
{
|
||||
CComVariant vName(i);
|
||||
CComVariant vIndex;
|
||||
CIPtr(IDispatch) cpDisp;
|
||||
|
||||
hr = pos.m_cpElementCollection->item( vName, vIndex, &cpDisp );
|
||||
if ( hr != S_OK )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
CIPtr(IHTMLElement) cpElem = cpDisp;
|
||||
if (cpElem == NULL)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// Get tag name
|
||||
BSTR bstrTagName = NULL;
|
||||
hr = cpElem->get_tagName(&bstrTagName);
|
||||
CString szTagName = bstrTagName;
|
||||
SysFreeString(bstrTagName);
|
||||
|
||||
// Add an icon to the tree
|
||||
HTREEITEM htiParent = m_TabDOM.m_tcDOM.InsertItem(szTagName, IL_CLOSEDFOLDER, IL_CLOSEDFOLDER, pos.m_htiParent);
|
||||
|
||||
CIPtr(IDispatch) cpDispColl;
|
||||
hr = cpElem->get_children(&cpDispColl);
|
||||
if (hr == S_OK)
|
||||
{
|
||||
CIPtr(IHTMLElementCollection) cpChildColl = cpDispColl;
|
||||
cStack.push(_ElementPos(pos.m_htiParent, pos.m_cpElementCollection, pos.m_nIndex + 1));
|
||||
cStack.push(_ElementPos(htiParent, cpChildColl, 0));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void CBrowseDlg::OnClose()
|
||||
{
|
||||
DestroyWebBrowser();
|
||||
DestroyWindow();
|
||||
}
|
||||
|
||||
|
||||
void CBrowseDlg::OnDestroy()
|
||||
{
|
||||
CDialog::OnDestroy();
|
||||
delete this;
|
||||
}
|
||||
|
||||
void CBrowseDlg::ExecOleCommand(const GUID *pguidGroup, DWORD nCmdId)
|
||||
{
|
||||
CComPtr<IUnknown> spUnkBrowser;
|
||||
m_pControlSite->GetControlUnknown(&spUnkBrowser);
|
||||
|
||||
CIPtr(IOleCommandTarget) spCommandTarget = spUnkBrowser;
|
||||
if (spCommandTarget)
|
||||
{
|
||||
HRESULT hr = spCommandTarget->Exec(&CGID_MSHTML, nCmdId, 0, NULL, NULL);
|
||||
OutputString(_T("Exec(%d), returned %08x"), (int) nCmdId, hr);
|
||||
}
|
||||
else
|
||||
{
|
||||
OutputString(_T("Error: Browser does not support IOleCommandTarget"));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void CBrowseDlg::OnEditMode()
|
||||
{
|
||||
DWORD nCmdID = (m_btnEditMode.GetCheck()) ? IDM_EDITMODE : IDM_BROWSEMODE;
|
||||
ExecOleCommand(&CGID_MSHTML, nCmdID);
|
||||
|
||||
// if (m_pControlSite)
|
||||
// {
|
||||
// m_pControlSite->SetAmbientUserMode((m_btnEditMode.GetCheck() == 0) ? FALSE : TRUE);
|
||||
// }
|
||||
}
|
||||
|
||||
|
||||
void CBrowseDlg::OnEditBold()
|
||||
{
|
||||
ExecOleCommand(&CGID_MSHTML, IDM_BOLD);
|
||||
}
|
||||
|
||||
void CBrowseDlg::OnEditItalic()
|
||||
{
|
||||
ExecOleCommand(&CGID_MSHTML, IDM_ITALIC);
|
||||
}
|
||||
|
||||
void CBrowseDlg::OnEditUnderline()
|
||||
{
|
||||
ExecOleCommand(&CGID_MSHTML, IDM_UNDERLINE);
|
||||
}
|
||||
|
||||
void CBrowseDlg::OnFileExit()
|
||||
{
|
||||
OnClose();
|
||||
}
|
||||
|
||||
void CBrowseDlg::OnViewRefresh()
|
||||
{
|
||||
IWebBrowser *pIWebBrowser = NULL;
|
||||
if (SUCCEEDED(GetWebBrowser(&pIWebBrowser)))
|
||||
{
|
||||
CComVariant vValue(REFRESH_COMPLETELY);
|
||||
pIWebBrowser->Refresh2(&vValue);
|
||||
pIWebBrowser->Release();
|
||||
}
|
||||
}
|
||||
|
||||
void CBrowseDlg::OnViewGotoBack()
|
||||
{
|
||||
OnBackward();
|
||||
}
|
||||
|
||||
void CBrowseDlg::OnViewGotoForward()
|
||||
{
|
||||
OnForward();
|
||||
}
|
||||
|
||||
void CBrowseDlg::OnUpdateViewGotoBack(CCmdUI* pCmdUI)
|
||||
{
|
||||
// TODO: Add your command update UI handler code here
|
||||
}
|
||||
|
||||
void CBrowseDlg::OnUpdateViewGotoForward(CCmdUI* pCmdUI)
|
||||
{
|
||||
// TODO: Add your command update UI handler code here
|
||||
}
|
||||
|
||||
void CBrowseDlg::OnViewGotoHome()
|
||||
{
|
||||
IWebBrowser *pIWebBrowser = NULL;
|
||||
if (SUCCEEDED(GetWebBrowser(&pIWebBrowser)))
|
||||
{
|
||||
pIWebBrowser->GoHome();
|
||||
pIWebBrowser->Release();
|
||||
}
|
||||
}
|
||||
|
||||
void CBrowseDlg::OnEditCopy()
|
||||
{
|
||||
ExecOleCommand(NULL, OLECMDID_COPY);
|
||||
}
|
||||
|
||||
void CBrowseDlg::OnEditCut()
|
||||
{
|
||||
ExecOleCommand(NULL, OLECMDID_CUT);
|
||||
}
|
||||
|
||||
void CBrowseDlg::OnEditPaste()
|
||||
{
|
||||
ExecOleCommand(NULL, OLECMDID_PASTE);
|
||||
}
|
||||
|
||||
void CBrowseDlg::OnEditSelectAll()
|
||||
{
|
||||
ExecOleCommand(NULL, OLECMDID_SELECTALL);
|
||||
}
|
||||
|
||||
void CBrowseDlg::OnHelpAbout()
|
||||
{
|
||||
AfxMessageBox(_T("CBrowse - Browser Control Test Harness"));
|
||||
}
|
||||
110
mozilla/embedding/browser/activex/tests/cbrowse/CBrowseDlg.h
Normal file
@@ -0,0 +1,110 @@
|
||||
// CBrowseDlg.h : header file
|
||||
//
|
||||
|
||||
#if !defined(AFX_CBROWSEDLG_H__5121F5E6_5324_11D2_93E1_000000000000__INCLUDED_)
|
||||
#define AFX_CBROWSEDLG_H__5121F5E6_5324_11D2_93E1_000000000000__INCLUDED_
|
||||
|
||||
#if _MSC_VER >= 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER >= 1000
|
||||
|
||||
#include "TabMessages.h"
|
||||
#include "TabTests.h"
|
||||
#include "TabDOM.h"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CBrowseDlg dialog
|
||||
|
||||
class CBrowseDlg : public CDialog
|
||||
{
|
||||
// Construction
|
||||
public:
|
||||
CBrowserCtlSiteInstance *m_pControlSite;
|
||||
CLSID m_clsid;
|
||||
BOOL m_bUseCustomPopupMenu;
|
||||
BOOL m_bUseCustomDropTarget;
|
||||
CMenu m_menu;
|
||||
|
||||
CBrowseDlg(CWnd* pParent = NULL); // standard constructor
|
||||
|
||||
static CBrowseDlg *m_pBrowseDlg;
|
||||
|
||||
HRESULT CreateWebBrowser();
|
||||
HRESULT DestroyWebBrowser();
|
||||
HRESULT GetWebBrowser(IWebBrowser **pWebBrowser);
|
||||
|
||||
void RunTestSet(TestSet *pTestSet);
|
||||
TestResult RunTest(Test *pTest);
|
||||
void UpdateTest(HTREEITEM hItem, TestResult nResult);
|
||||
void UpdateTestSet(HTREEITEM hItem);
|
||||
void OutputString(const TCHAR *szMessage, ...);
|
||||
void ExecOleCommand(const GUID *pguidGroup, DWORD nCmdId);
|
||||
|
||||
// Dialog Data
|
||||
//{{AFX_DATA(CBrowseDlg)
|
||||
enum { IDD = IDD_CBROWSE_DIALOG };
|
||||
CButton m_btnEditMode;
|
||||
CComboBox m_cmbURLs;
|
||||
BOOL m_bNewWindow;
|
||||
//}}AFX_DATA
|
||||
|
||||
CToolBar m_EditBar;
|
||||
CPropertySheet m_dlgPropSheet;
|
||||
CTabMessages m_TabMessages;
|
||||
CTabTests m_TabTests;
|
||||
CTabDOM m_TabDOM;
|
||||
CImageList m_cImageList;
|
||||
|
||||
void OnRefreshDOM();
|
||||
void OnRunTest();
|
||||
void PopulateTests();
|
||||
|
||||
// ClassWizard generated virtual function overrides
|
||||
//{{AFX_VIRTUAL(CBrowseDlg)
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
|
||||
//}}AFX_VIRTUAL
|
||||
|
||||
// Implementation
|
||||
protected:
|
||||
HICON m_hIcon;
|
||||
CString m_szTestURL;
|
||||
CString m_szTestCGI;
|
||||
DWORD m_dwCookie;
|
||||
|
||||
// Generated message map functions
|
||||
//{{AFX_MSG(CBrowseDlg)
|
||||
virtual BOOL OnInitDialog();
|
||||
afx_msg void OnPaint();
|
||||
afx_msg HCURSOR OnQueryDragIcon();
|
||||
afx_msg void OnGo();
|
||||
afx_msg void OnBackward();
|
||||
afx_msg void OnForward();
|
||||
afx_msg void OnClose();
|
||||
afx_msg void OnDestroy();
|
||||
afx_msg void OnSize(UINT nType, int cx, int cy);
|
||||
afx_msg void OnEditMode();
|
||||
afx_msg void OnFileExit();
|
||||
afx_msg void OnViewGotoBack();
|
||||
afx_msg void OnViewGotoForward();
|
||||
afx_msg void OnViewGotoHome();
|
||||
afx_msg void OnEditCopy();
|
||||
afx_msg void OnEditCut();
|
||||
afx_msg void OnEditPaste();
|
||||
afx_msg void OnHelpAbout();
|
||||
afx_msg void OnUpdateViewGotoBack(CCmdUI* pCmdUI);
|
||||
afx_msg void OnUpdateViewGotoForward(CCmdUI* pCmdUI);
|
||||
afx_msg void OnEditSelectAll();
|
||||
afx_msg void OnViewRefresh();
|
||||
//}}AFX_MSG
|
||||
afx_msg void OnEditBold();
|
||||
afx_msg void OnEditItalic();
|
||||
afx_msg void OnEditUnderline();
|
||||
|
||||
DECLARE_MESSAGE_MAP()
|
||||
};
|
||||
|
||||
//{{AFX_INSERT_LOCATION}}
|
||||
// Microsoft Developer Studio will insert additional declarations immediately before the previous line.
|
||||
|
||||
#endif // !defined(AFX_CBROWSEDLG_H__5121F5E6_5324_11D2_93E1_000000000000__INCLUDED_)
|
||||
@@ -0,0 +1,172 @@
|
||||
// CBrowserCtlSite.cpp : Implementation of CBrowserCtlSite
|
||||
#include "stdafx.h"
|
||||
#include "Cbrowse.h"
|
||||
#include "CBrowserCtlSite.h"
|
||||
|
||||
#include <tchar.h>
|
||||
#include <string.h>
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CBrowserCtlSite
|
||||
|
||||
CBrowserCtlSite::CBrowserCtlSite()
|
||||
{
|
||||
m_bUseCustomPopupMenu = TRUE;
|
||||
m_bUseCustomDropTarget = FALSE;
|
||||
}
|
||||
|
||||
static void _InsertMenuItem(HMENU hmenu, int nPos, int nID, const TCHAR *szItemText)
|
||||
{
|
||||
MENUITEMINFO mii;
|
||||
memset(&mii, 0, sizeof(mii));
|
||||
mii.cbSize = sizeof(mii);
|
||||
mii.fMask = MIIM_TYPE;
|
||||
mii.fType = MFT_STRING;
|
||||
mii.fState = MFS_ENABLED;
|
||||
mii.dwTypeData = (LPTSTR) szItemText;
|
||||
mii.cch = _tcslen(szItemText);
|
||||
InsertMenuItem(hmenu, nPos, TRUE, &mii);
|
||||
}
|
||||
|
||||
static void _InsertMenuSeperator(HMENU hmenu, int nPos)
|
||||
{
|
||||
MENUITEMINFO mii;
|
||||
memset(&mii, 0, sizeof(mii));
|
||||
mii.cbSize = sizeof(mii);
|
||||
mii.fMask = MIIM_TYPE;
|
||||
mii.fType = MFT_SEPARATOR;
|
||||
mii.fState = MFS_ENABLED;
|
||||
InsertMenuItem(hmenu, nPos, TRUE, &mii);
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// IDocHostUIHandler
|
||||
|
||||
HRESULT STDMETHODCALLTYPE CBrowserCtlSite::ShowContextMenu(/* [in] */ DWORD dwID, /* [in] */ POINT __RPC_FAR *ppt, /* [in] */ IUnknown __RPC_FAR *pcmdtReserved, /* [in] */ IDispatch __RPC_FAR *pdispReserved)
|
||||
{
|
||||
if (m_bUseCustomPopupMenu)
|
||||
{
|
||||
tstring szMenuText(_T("Unknown context"));
|
||||
HMENU hmenu = CreatePopupMenu();
|
||||
_InsertMenuItem(hmenu, 0, 1, _T("CBrowse context popup"));
|
||||
_InsertMenuSeperator(hmenu, 1);
|
||||
switch (dwID)
|
||||
{
|
||||
case CONTEXT_MENU_DEFAULT:
|
||||
szMenuText = _T("Default context");
|
||||
break;
|
||||
case CONTEXT_MENU_IMAGE:
|
||||
szMenuText = _T("Image context");
|
||||
break;
|
||||
case CONTEXT_MENU_CONTROL:
|
||||
szMenuText = _T("Control context");
|
||||
break;
|
||||
case CONTEXT_MENU_TABLE:
|
||||
szMenuText = _T("Table context");
|
||||
break;
|
||||
case CONTEXT_MENU_TEXTSELECT:
|
||||
szMenuText = _T("TextSelect context");
|
||||
break;
|
||||
case CONTEXT_MENU_ANCHOR:
|
||||
szMenuText = _T("Anchor context");
|
||||
break;
|
||||
case CONTEXT_MENU_UNKNOWN:
|
||||
szMenuText = _T("Unknown context");
|
||||
break;
|
||||
}
|
||||
|
||||
_InsertMenuItem(hmenu, 2, 2, szMenuText.c_str());
|
||||
|
||||
POINT pt;
|
||||
GetCursorPos(&pt);
|
||||
TrackPopupMenu(hmenu, TPM_RETURNCMD, pt.x, pt.y, 0, AfxGetMainWnd()->GetSafeHwnd(), NULL);
|
||||
DestroyMenu(hmenu);
|
||||
return S_OK;
|
||||
}
|
||||
return S_FALSE;
|
||||
}
|
||||
|
||||
HRESULT STDMETHODCALLTYPE CBrowserCtlSite::GetHostInfo(/* [out][in] */ DOCHOSTUIINFO __RPC_FAR *pInfo)
|
||||
{
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT STDMETHODCALLTYPE CBrowserCtlSite::ShowUI(/* [in] */ DWORD dwID, /* [in] */ IOleInPlaceActiveObject __RPC_FAR *pActiveObject, /* [in] */ IOleCommandTarget __RPC_FAR *pCommandTarget, /* [in] */ IOleInPlaceFrame __RPC_FAR *pFrame, /* [in] */ IOleInPlaceUIWindow __RPC_FAR *pDoc)
|
||||
{
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT STDMETHODCALLTYPE CBrowserCtlSite::HideUI(void)
|
||||
{
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT STDMETHODCALLTYPE CBrowserCtlSite::UpdateUI(void)
|
||||
{
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT STDMETHODCALLTYPE CBrowserCtlSite::EnableModeless(/* [in] */ BOOL fEnable)
|
||||
{
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT STDMETHODCALLTYPE CBrowserCtlSite::OnDocWindowActivate(/* [in] */ BOOL fActivate)
|
||||
{
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT STDMETHODCALLTYPE CBrowserCtlSite::OnFrameWindowActivate(/* [in] */ BOOL fActivate)
|
||||
{
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT STDMETHODCALLTYPE CBrowserCtlSite::ResizeBorder(/* [in] */ LPCRECT prcBorder, /* [in] */ IOleInPlaceUIWindow __RPC_FAR *pUIWindow, /* [in] */ BOOL fRameWindow)
|
||||
{
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT STDMETHODCALLTYPE CBrowserCtlSite::TranslateAccelerator(/* [in] */ LPMSG lpMsg, /* [in] */ const GUID __RPC_FAR *pguidCmdGroup, /* [in] */ DWORD nCmdID)
|
||||
{
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT STDMETHODCALLTYPE CBrowserCtlSite::GetOptionKeyPath(/* [out] */ LPOLESTR __RPC_FAR *pchKey, /* [in] */ DWORD dw)
|
||||
{
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT STDMETHODCALLTYPE CBrowserCtlSite::GetDropTarget(/* [in] */ IDropTarget __RPC_FAR *pDropTarget, /* [out] */ IDropTarget __RPC_FAR *__RPC_FAR *ppDropTarget)
|
||||
{
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT STDMETHODCALLTYPE CBrowserCtlSite::GetExternal(/* [out] */ IDispatch __RPC_FAR *__RPC_FAR *ppDispatch)
|
||||
{
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT STDMETHODCALLTYPE CBrowserCtlSite::TranslateUrl(/* [in] */ DWORD dwTranslate, /* [in] */ OLECHAR __RPC_FAR *pchURLIn, /* [out] */ OLECHAR __RPC_FAR *__RPC_FAR *ppchURLOut)
|
||||
{
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT STDMETHODCALLTYPE CBrowserCtlSite::FilterDataObject(/* [in] */ IDataObject __RPC_FAR *pDO, /* [out] */ IDataObject __RPC_FAR *__RPC_FAR *ppDORet)
|
||||
{
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// IDocHostShowUI
|
||||
|
||||
HRESULT STDMETHODCALLTYPE CBrowserCtlSite::ShowMessage(/* [in] */ HWND hwnd, /* [in] */ LPOLESTR lpstrText, /* [in] */ LPOLESTR lpstrCaption, /* [in] */ DWORD dwType, /* [in] */ LPOLESTR lpstrHelpFile, /* [in] */ DWORD dwHelpContext,/* [out] */ LRESULT __RPC_FAR *plResult)
|
||||
{
|
||||
return S_FALSE;
|
||||
}
|
||||
|
||||
HRESULT STDMETHODCALLTYPE CBrowserCtlSite::ShowHelp(/* [in] */ HWND hwnd, /* [in] */ LPOLESTR pszHelpFile, /* [in] */ UINT uCommand, /* [in] */ DWORD dwData, /* [in] */ POINT ptMouse, /* [out] */ IDispatch __RPC_FAR *pDispatchObjectHit)
|
||||
{
|
||||
return S_FALSE;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
// CBrowserCtlSite.h : Declaration of the CBrowserCtlSite
|
||||
|
||||
#ifndef __CBROWSERCTLSITE_H_
|
||||
#define __CBROWSERCTLSITE_H_
|
||||
|
||||
#include "resource.h" // main symbols
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CBrowserCtlSite
|
||||
class ATL_NO_VTABLE CBrowserCtlSite :
|
||||
public CControlSite,
|
||||
public IDocHostUIHandler,
|
||||
public IDocHostShowUI
|
||||
{
|
||||
public:
|
||||
CBrowserCtlSite();
|
||||
|
||||
DECLARE_REGISTRY_RESOURCEID(IDR_CBROWSERCTLSITE)
|
||||
|
||||
DECLARE_PROTECT_FINAL_CONSTRUCT()
|
||||
|
||||
BEGIN_COM_MAP(CBrowserCtlSite)
|
||||
CCONTROLSITE_INTERFACES()
|
||||
COM_INTERFACE_ENTRY(IDocHostUIHandler)
|
||||
COM_INTERFACE_ENTRY(IDocHostShowUI)
|
||||
END_COM_MAP()
|
||||
|
||||
BOOL m_bUseCustomPopupMenu;
|
||||
BOOL m_bUseCustomDropTarget;
|
||||
|
||||
public:
|
||||
// IDocHostUIHandler
|
||||
virtual HRESULT STDMETHODCALLTYPE ShowContextMenu(/* [in] */ DWORD dwID, /* [in] */ POINT __RPC_FAR *ppt, /* [in] */ IUnknown __RPC_FAR *pcmdtReserved, /* [in] */ IDispatch __RPC_FAR *pdispReserved);
|
||||
virtual HRESULT STDMETHODCALLTYPE GetHostInfo(/* [out][in] */ DOCHOSTUIINFO __RPC_FAR *pInfo);
|
||||
virtual HRESULT STDMETHODCALLTYPE ShowUI(/* [in] */ DWORD dwID, /* [in] */ IOleInPlaceActiveObject __RPC_FAR *pActiveObject, /* [in] */ IOleCommandTarget __RPC_FAR *pCommandTarget, /* [in] */ IOleInPlaceFrame __RPC_FAR *pFrame, /* [in] */ IOleInPlaceUIWindow __RPC_FAR *pDoc);
|
||||
virtual HRESULT STDMETHODCALLTYPE HideUI(void);
|
||||
virtual HRESULT STDMETHODCALLTYPE UpdateUI(void);
|
||||
virtual HRESULT STDMETHODCALLTYPE EnableModeless(/* [in] */ BOOL fEnable);
|
||||
virtual HRESULT STDMETHODCALLTYPE OnDocWindowActivate(/* [in] */ BOOL fActivate);
|
||||
virtual HRESULT STDMETHODCALLTYPE OnFrameWindowActivate(/* [in] */ BOOL fActivate);
|
||||
virtual HRESULT STDMETHODCALLTYPE ResizeBorder(/* [in] */ LPCRECT prcBorder, /* [in] */ IOleInPlaceUIWindow __RPC_FAR *pUIWindow, /* [in] */ BOOL fRameWindow);
|
||||
virtual HRESULT STDMETHODCALLTYPE TranslateAccelerator(/* [in] */ LPMSG lpMsg, /* [in] */ const GUID __RPC_FAR *pguidCmdGroup, /* [in] */ DWORD nCmdID);
|
||||
virtual HRESULT STDMETHODCALLTYPE GetOptionKeyPath(/* [out] */ LPOLESTR __RPC_FAR *pchKey, /* [in] */ DWORD dw);
|
||||
virtual HRESULT STDMETHODCALLTYPE GetDropTarget(/* [in] */ IDropTarget __RPC_FAR *pDropTarget, /* [out] */ IDropTarget __RPC_FAR *__RPC_FAR *ppDropTarget);
|
||||
virtual HRESULT STDMETHODCALLTYPE GetExternal(/* [out] */ IDispatch __RPC_FAR *__RPC_FAR *ppDispatch);
|
||||
virtual HRESULT STDMETHODCALLTYPE TranslateUrl(/* [in] */ DWORD dwTranslate, /* [in] */ OLECHAR __RPC_FAR *pchURLIn, /* [out] */ OLECHAR __RPC_FAR *__RPC_FAR *ppchURLOut);
|
||||
virtual HRESULT STDMETHODCALLTYPE FilterDataObject(/* [in] */ IDataObject __RPC_FAR *pDO, /* [out] */ IDataObject __RPC_FAR *__RPC_FAR *ppDORet);
|
||||
|
||||
// IDocHostShowUI
|
||||
virtual HRESULT STDMETHODCALLTYPE ShowMessage(/* [in] */ HWND hwnd, /* [in] */ LPOLESTR lpstrText, /* [in] */ LPOLESTR lpstrCaption, /* [in] */ DWORD dwType, /* [in] */ LPOLESTR lpstrHelpFile, /* [in] */ DWORD dwHelpContext,/* [out] */ LRESULT __RPC_FAR *plResult);
|
||||
virtual HRESULT STDMETHODCALLTYPE ShowHelp(/* [in] */ HWND hwnd, /* [in] */ LPOLESTR pszHelpFile, /* [in] */ UINT uCommand, /* [in] */ DWORD dwData, /* [in] */ POINT ptMouse, /* [out] */ IDispatch __RPC_FAR *pDispatchObjectHit);
|
||||
};
|
||||
|
||||
typedef CComObject<CBrowserCtlSite> CBrowserCtlSiteInstance;
|
||||
|
||||
#endif //__CBROWSERCTLSITE_H_
|
||||
@@ -0,0 +1,24 @@
|
||||
HKCR
|
||||
{
|
||||
Cbrowse.CBrowserCtlSite.1 = s 'CBrowserCtlSite Class'
|
||||
{
|
||||
CLSID = s '{8EC06081-21DE-11D3-941E-000000000000}'
|
||||
}
|
||||
Cbrowse.CBrowserCtlSite = s 'CBrowserCtlSite Class'
|
||||
{
|
||||
CLSID = s '{8EC06081-21DE-11D3-941E-000000000000}'
|
||||
CurVer = s 'Cbrowse.CBrowserCtlSite.1'
|
||||
}
|
||||
NoRemove CLSID
|
||||
{
|
||||
ForceRemove {8EC06081-21DE-11D3-941E-000000000000} = s 'CBrowserCtlSite Class'
|
||||
{
|
||||
ProgID = s 'Cbrowse.CBrowserCtlSite.1'
|
||||
VersionIndependentProgID = s 'Cbrowse.CBrowserCtlSite'
|
||||
ForceRemove 'Programmable'
|
||||
LocalServer32 = s '%MODULE%'
|
||||
val AppID = s '{5B209214-F756-11D2-A27F-000000000000}'
|
||||
'TypeLib' = s '{5B209213-F756-11D2-A27F-000000000000}'
|
||||
}
|
||||
}
|
||||
}
|
||||
68
mozilla/embedding/browser/activex/tests/cbrowse/Cbrowse.idl
Normal file
@@ -0,0 +1,68 @@
|
||||
|
||||
// Cbrowse.idl : IDL source for Cbrowse.exe
|
||||
//
|
||||
// This file will be processed by the MIDL tool to
|
||||
// produce the type library (Cbrowse.tlb) and marshalling code.
|
||||
import "oaidl.idl";
|
||||
import "ocidl.idl";
|
||||
|
||||
typedef enum
|
||||
{
|
||||
trNotRun,
|
||||
trFailed,
|
||||
trPassed,
|
||||
trPartial
|
||||
} TestResult;
|
||||
|
||||
[
|
||||
object,
|
||||
uuid(95AF1AB1-FA66-11D2-A284-000000000000),
|
||||
dual,
|
||||
helpstring("DITestScriptHelper Interface"),
|
||||
pointer_default(unique)
|
||||
]
|
||||
interface DITestScriptHelper : IDispatch
|
||||
{
|
||||
[id(1), helpstring("method OutputString")] HRESULT OutputString(BSTR bstrMessage);
|
||||
[propget, id(2), helpstring("property WebBrowser")] HRESULT WebBrowser([out, retval] LPDISPATCH *pVal);
|
||||
[propput, id(3), helpstring("property Result")] HRESULT Result([in] TestResult newVal);
|
||||
[propget, id(4), helpstring("property TestURL")] HRESULT TestURL([out, retval] BSTR *pVal);
|
||||
[propget, id(5), helpstring("property TestCGI")] HRESULT TestCGI([out, retval] BSTR *pVal);
|
||||
};
|
||||
|
||||
[
|
||||
uuid(5B209213-F756-11D2-A27F-000000000000),
|
||||
version(1.0),
|
||||
helpstring("Cbrowse 1.0 Type Library")
|
||||
]
|
||||
library CbrowseLib
|
||||
{
|
||||
importlib("stdole32.tlb");
|
||||
importlib("stdole2.tlb");
|
||||
[
|
||||
uuid(95AF1AB2-FA66-11D2-A284-000000000000),
|
||||
helpstring("TestScriptHelper Class")
|
||||
]
|
||||
coclass TestScriptHelper
|
||||
{
|
||||
[default] interface DITestScriptHelper;
|
||||
};
|
||||
[
|
||||
uuid(31204F42-FCE8-11D2-A289-000000000000),
|
||||
helpstring("ControlEventSink Class")
|
||||
]
|
||||
coclass ControlEventSink
|
||||
{
|
||||
[default] interface IDispatch;
|
||||
};
|
||||
[
|
||||
uuid(8EC06081-21DE-11D3-941E-000000000000),
|
||||
helpstring("CBrowserCtlSite Class")
|
||||
]
|
||||
coclass CBrowserCtlSite
|
||||
{
|
||||
[default] interface IUnknown;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
11
mozilla/embedding/browser/activex/tests/cbrowse/Cbrowse.rgs
Normal file
@@ -0,0 +1,11 @@
|
||||
HKCR
|
||||
{
|
||||
NoRemove AppID
|
||||
{
|
||||
{5B209214-F756-11D2-A27F-000000000000} = s 'Cbrowse'
|
||||
'Cbrowse.EXE'
|
||||
{
|
||||
val AppID = s {5B209214-F756-11D2-A27F-000000000000}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,144 @@
|
||||
// ControlEventSink.cpp : Implementation of CControlEventSink
|
||||
#include "stdafx.h"
|
||||
#include "Cbrowse.h"
|
||||
#include "ControlEventSink.h"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CControlEventSink
|
||||
|
||||
HRESULT STDMETHODCALLTYPE CControlEventSink::GetTypeInfoCount(
|
||||
/* [out] */ UINT __RPC_FAR *pctinfo)
|
||||
{
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT STDMETHODCALLTYPE CControlEventSink::GetTypeInfo(
|
||||
/* [in] */ UINT iTInfo,
|
||||
/* [in] */ LCID lcid,
|
||||
/* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo)
|
||||
{
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT STDMETHODCALLTYPE CControlEventSink::GetIDsOfNames(
|
||||
/* [in] */ REFIID riid,
|
||||
/* [size_is][in] */ LPOLESTR __RPC_FAR *rgszNames,
|
||||
/* [in] */ UINT cNames,
|
||||
/* [in] */ LCID lcid,
|
||||
/* [size_is][out] */ DISPID __RPC_FAR *rgDispId)
|
||||
{
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT STDMETHODCALLTYPE CControlEventSink:: Invoke(
|
||||
/* [in] */ DISPID dispIdMember,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [in] */ LCID lcid,
|
||||
/* [in] */ WORD wFlags,
|
||||
/* [out][in] */ DISPPARAMS __RPC_FAR *pDispParams,
|
||||
/* [out] */ VARIANT __RPC_FAR *pVarResult,
|
||||
/* [out] */ EXCEPINFO __RPC_FAR *pExcepInfo,
|
||||
/* [out] */ UINT __RPC_FAR *puArgErr)
|
||||
{
|
||||
CString szEvent;
|
||||
|
||||
switch (dispIdMember)
|
||||
{
|
||||
case 0x66:
|
||||
{
|
||||
USES_CONVERSION;
|
||||
CString szText(OLE2T(pDispParams->rgvarg[0].bstrVal));
|
||||
szEvent.Format(_T("StatusTextChange: \"%s\""), szText);
|
||||
m_pBrowseDlg->m_TabMessages.m_szStatus = szText;
|
||||
m_pBrowseDlg->m_TabMessages.UpdateData(FALSE);
|
||||
}
|
||||
break;
|
||||
case 0x6c:
|
||||
{
|
||||
LONG nProgress = pDispParams->rgvarg[1].lVal;
|
||||
LONG nProgressMax = pDispParams->rgvarg[0].lVal;
|
||||
szEvent.Format("ProgressChange(%d of %d)", nProgress, nProgressMax);
|
||||
CProgressCtrl &pc = m_pBrowseDlg->m_TabMessages.m_pcProgress;
|
||||
pc.SetRange(0, nProgressMax);
|
||||
pc.SetPos(nProgress);
|
||||
}
|
||||
break;
|
||||
case 0x69:
|
||||
szEvent = _T("CommandStateChange");
|
||||
break;
|
||||
case 0x6a:
|
||||
szEvent = _T("DownloadBegin");
|
||||
break;
|
||||
case 0x68:
|
||||
szEvent = _T("DownloadComplete");
|
||||
break;
|
||||
case 0x71:
|
||||
szEvent = _T("TitleChange");
|
||||
break;
|
||||
case 0x70:
|
||||
szEvent = _T("PropertyChange");
|
||||
break;
|
||||
case 0xfa:
|
||||
{
|
||||
szEvent = _T("BeforeNavigate2");
|
||||
}
|
||||
break;
|
||||
case 0xfb:
|
||||
{
|
||||
szEvent = _T("NewWindow2");
|
||||
|
||||
VARIANTARG *pvars = pDispParams->rgvarg;
|
||||
CBrowseDlg *pDlg = new CBrowseDlg;
|
||||
if (pDlg)
|
||||
{
|
||||
pDlg->m_clsid = m_pBrowseDlg->m_clsid;
|
||||
pDlg->Create(IDD_CBROWSE_DIALOG);
|
||||
|
||||
if (pDlg->m_pControlSite)
|
||||
{
|
||||
CIUnkPtr spUnkBrowser;
|
||||
pDlg->m_pControlSite->GetControlUnknown(&spUnkBrowser);
|
||||
|
||||
pvars[0].byref = (void *) VARIANT_FALSE;
|
||||
spUnkBrowser->QueryInterface(IID_IDispatch, (void **) pvars[1].byref);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 0xfc:
|
||||
szEvent = _T("NavigateComplete2");
|
||||
break;
|
||||
case 0x103:
|
||||
szEvent = _T("DocumentComplete");
|
||||
break;
|
||||
case 0xfd:
|
||||
szEvent = _T("OnQuit");
|
||||
break;
|
||||
case 0xfe:
|
||||
szEvent = _T("OnVisible");
|
||||
break;
|
||||
case 0xff:
|
||||
szEvent = _T("OnToolBar");
|
||||
break;
|
||||
case 0x100:
|
||||
szEvent = _T("OnMenuBar");
|
||||
break;
|
||||
case 0x101:
|
||||
szEvent = _T("OnStatusBar");
|
||||
break;
|
||||
case 0x102:
|
||||
szEvent = _T("OnFullScreen");
|
||||
break;
|
||||
case 0x104:
|
||||
szEvent = _T("OnTheaterMode");
|
||||
break;
|
||||
default:
|
||||
szEvent.Format(_T("%d"), dispIdMember);
|
||||
}
|
||||
|
||||
if (m_pBrowseDlg)
|
||||
{
|
||||
m_pBrowseDlg->OutputString(_T("Event %s"), szEvent);
|
||||
}
|
||||
return S_OK;
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
// ControlEventSink.h : Declaration of the CControlEventSink
|
||||
|
||||
#ifndef __CONTROLEVENTSINK_H_
|
||||
#define __CONTROLEVENTSINK_H_
|
||||
|
||||
#include "CBrowseDlg.h"
|
||||
#include "resource.h" // main symbols
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CControlEventSink
|
||||
class ATL_NO_VTABLE CControlEventSink :
|
||||
public CComObjectRootEx<CComSingleThreadModel>,
|
||||
public CComCoClass<CControlEventSink, &CLSID_ControlEventSink>,
|
||||
public IDispatch
|
||||
{
|
||||
public:
|
||||
CControlEventSink()
|
||||
{
|
||||
m_pBrowseDlg = NULL;
|
||||
}
|
||||
|
||||
CBrowseDlg *m_pBrowseDlg;
|
||||
|
||||
DECLARE_REGISTRY_RESOURCEID(IDR_CONTROLEVENTSINK)
|
||||
|
||||
DECLARE_PROTECT_FINAL_CONSTRUCT()
|
||||
|
||||
BEGIN_COM_MAP(CControlEventSink)
|
||||
COM_INTERFACE_ENTRY(IDispatch)
|
||||
COM_INTERFACE_ENTRY_IID(DIID_DWebBrowserEvents2, IDispatch)
|
||||
END_COM_MAP()
|
||||
|
||||
// IDispatch
|
||||
public:
|
||||
virtual HRESULT STDMETHODCALLTYPE GetTypeInfoCount(
|
||||
/* [out] */ UINT __RPC_FAR *pctinfo);
|
||||
virtual HRESULT STDMETHODCALLTYPE GetTypeInfo(
|
||||
/* [in] */ UINT iTInfo,
|
||||
/* [in] */ LCID lcid,
|
||||
/* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo);
|
||||
virtual HRESULT STDMETHODCALLTYPE GetIDsOfNames(
|
||||
/* [in] */ REFIID riid,
|
||||
/* [size_is][in] */ LPOLESTR __RPC_FAR *rgszNames,
|
||||
/* [in] */ UINT cNames,
|
||||
/* [in] */ LCID lcid,
|
||||
/* [size_is][out] */ DISPID __RPC_FAR *rgDispId);
|
||||
virtual /* [local] */ HRESULT STDMETHODCALLTYPE Invoke(
|
||||
/* [in] */ DISPID dispIdMember,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [in] */ LCID lcid,
|
||||
/* [in] */ WORD wFlags,
|
||||
/* [out][in] */ DISPPARAMS __RPC_FAR *pDispParams,
|
||||
/* [out] */ VARIANT __RPC_FAR *pVarResult,
|
||||
/* [out] */ EXCEPINFO __RPC_FAR *pExcepInfo,
|
||||
/* [out] */ UINT __RPC_FAR *puArgErr);
|
||||
};
|
||||
|
||||
typedef CComObject<CControlEventSink> CControlEventSinkInstance;
|
||||
|
||||
#endif //__CONTROLEVENTSINK_H_
|
||||
@@ -0,0 +1,24 @@
|
||||
HKCR
|
||||
{
|
||||
Cbrowse.ControlEventSink.1 = s 'ControlEventSink Class'
|
||||
{
|
||||
CLSID = s '{31204F42-FCE8-11D2-A289-000000000000}'
|
||||
}
|
||||
Cbrowse.ControlEventSink = s 'ControlEventSink Class'
|
||||
{
|
||||
CLSID = s '{31204F42-FCE8-11D2-A289-000000000000}'
|
||||
CurVer = s 'Cbrowse.ControlEventSink.1'
|
||||
}
|
||||
NoRemove CLSID
|
||||
{
|
||||
ForceRemove {31204F42-FCE8-11D2-A289-000000000000} = s 'ControlEventSink Class'
|
||||
{
|
||||
ProgID = s 'Cbrowse.ControlEventSink.1'
|
||||
VersionIndependentProgID = s 'Cbrowse.ControlEventSink'
|
||||
ForceRemove 'Programmable'
|
||||
LocalServer32 = s '%MODULE%'
|
||||
val AppID = s '{5B209214-F756-11D2-A27F-000000000000}'
|
||||
'TypeLib' = s '{5B209213-F756-11D2-A27F-000000000000}'
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
// EditToolBar.cpp : implementation file
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "cbrowse.h"
|
||||
#include "EditToolBar.h"
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define new DEBUG_NEW
|
||||
#undef THIS_FILE
|
||||
static char THIS_FILE[] = __FILE__;
|
||||
#endif
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CEditToolBar
|
||||
|
||||
CEditToolBar::CEditToolBar()
|
||||
{
|
||||
}
|
||||
|
||||
CEditToolBar::~CEditToolBar()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CEditToolBar, CToolBarCtrl)
|
||||
//{{AFX_MSG_MAP(CEditToolBar)
|
||||
// NOTE - the ClassWizard will add and remove mapping macros here.
|
||||
//}}AFX_MSG_MAP
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CEditToolBar message handlers
|
||||
@@ -0,0 +1,48 @@
|
||||
#if !defined(AFX_EDITTOOLBAR_H__39B3B0A1_5412_11D3_9441_000000000000__INCLUDED_)
|
||||
#define AFX_EDITTOOLBAR_H__39B3B0A1_5412_11D3_9441_000000000000__INCLUDED_
|
||||
|
||||
#if _MSC_VER > 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER > 1000
|
||||
// EditToolBar.h : header file
|
||||
//
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CEditToolBar window
|
||||
|
||||
class CEditToolBar : public CToolBarCtrl
|
||||
{
|
||||
// Construction
|
||||
public:
|
||||
CEditToolBar();
|
||||
|
||||
// Attributes
|
||||
public:
|
||||
|
||||
// Operations
|
||||
public:
|
||||
|
||||
// Overrides
|
||||
// ClassWizard generated virtual function overrides
|
||||
//{{AFX_VIRTUAL(CEditToolBar)
|
||||
//}}AFX_VIRTUAL
|
||||
|
||||
// Implementation
|
||||
public:
|
||||
virtual ~CEditToolBar();
|
||||
|
||||
// Generated message map functions
|
||||
protected:
|
||||
//{{AFX_MSG(CEditToolBar)
|
||||
// NOTE - the ClassWizard will add and remove member functions here.
|
||||
//}}AFX_MSG
|
||||
|
||||
DECLARE_MESSAGE_MAP()
|
||||
};
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
//{{AFX_INSERT_LOCATION}}
|
||||
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
|
||||
|
||||
#endif // !defined(AFX_EDITTOOLBAR_H__39B3B0A1_5412_11D3_9441_000000000000__INCLUDED_)
|
||||
@@ -0,0 +1,32 @@
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Language" content="en-gb">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
|
||||
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
|
||||
<meta name="ProgId" content="FrontPage.Editor.Document">
|
||||
<title>This is the main test page for the Mozilla control</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<p>This is the main test page for the Mozilla control</p>
|
||||
<p>Try out some links:</p>
|
||||
<p><a href="http://www.yahoo.com">http://www.yahoo.com</a></p>
|
||||
<p><a href="http://www.netscape.com">http://www.netscape.com</a></p>
|
||||
<p><a href="http://www.excite.com">http://www.excite.com</a></p>
|
||||
<p><a href="http://www.mozilla.org">http://www.mozilla.org</a></p>
|
||||
<p>How about a nice form to test out the PostData value in BeforeNavigate2?</p>
|
||||
<p>Ok then! An Altavista Search - </p>
|
||||
<form name=mfrm method=POST action="http://www.altavista.com/cgi-bin/query">
|
||||
<input type=hidden name=pg value=q>
|
||||
<input type=hidden name=kl value=XX>
|
||||
<input class="sideitem" name=q size=8 maxlength=800 value="">
|
||||
<input class="sideitem" type=submit name=search value="Search"></td></tr>
|
||||
</form>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
129
mozilla/embedding/browser/activex/tests/cbrowse/PickerDlg.cpp
Normal file
@@ -0,0 +1,129 @@
|
||||
// PickerDlg.cpp : implementation file
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "cbrowse.h"
|
||||
#include "PickerDlg.h"
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define new DEBUG_NEW
|
||||
#undef THIS_FILE
|
||||
static char THIS_FILE[] = __FILE__;
|
||||
#endif
|
||||
|
||||
// CLSIDs for the Mozilla and IE browser controls
|
||||
|
||||
static const CLSID CLSID_Mozilla =
|
||||
{ 0x1339B54C, 0x3453, 0x11D2, { 0x93, 0xB9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } };
|
||||
|
||||
static const CLSID CLSID_InternetExplorer =
|
||||
{ 0x8856F961, 0x340A, 0x11D0, { 0xA9, 0x6B, 0x00, 0xC0, 0x4F, 0xD7, 0x05, 0xA2 } };
|
||||
|
||||
static const CLSID CLSID_MSHTML =
|
||||
{ 0x2D360200, 0xFFF5, 0x11D1, { 0x8D, 0x03, 0x00, 0xA0, 0xC9, 0x59, 0xBC, 0x0A } };
|
||||
|
||||
struct BrowserControl
|
||||
{
|
||||
TCHAR *szName;
|
||||
const CLSID *clsid;
|
||||
};
|
||||
|
||||
BrowserControl aControls[] =
|
||||
{
|
||||
{ _T("Mozilla Control"), &CLSID_Mozilla },
|
||||
{ _T("Internet Explorer Control"), &CLSID_InternetExplorer }
|
||||
};
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CPickerDlg dialog
|
||||
|
||||
|
||||
CPickerDlg::CPickerDlg(CWnd* pParent /*=NULL*/)
|
||||
: CDialog(CPickerDlg::IDD, pParent)
|
||||
{
|
||||
//{{AFX_DATA_INIT(CPickerDlg)
|
||||
m_szTestURL = _T("");
|
||||
m_szTestCGI = _T("");
|
||||
m_bDebugging = FALSE;
|
||||
m_sDebugFlags = _T("");
|
||||
m_bUseCustom = FALSE;
|
||||
//}}AFX_DATA_INIT
|
||||
m_clsid = CLSID_NULL;
|
||||
|
||||
CWinApp *pApp = AfxGetApp();
|
||||
m_szTestURL = pApp->GetProfileString(SECTION_TEST, KEY_TESTURL, KEY_TESTURL_DEFAULTVALUE);
|
||||
m_szTestCGI = pApp->GetProfileString(SECTION_TEST, KEY_TESTCGI, KEY_TESTCGI_DEFAULTVALUE);
|
||||
m_sDebugFlags = _T("NSPR_LOG_MODULES=nsComponentManager:5");
|
||||
}
|
||||
|
||||
void CPickerDlg::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
//{{AFX_DATA_MAP(CPickerDlg)
|
||||
DDX_Control(pDX, IDC_LISTBROWSER, m_lbPicker);
|
||||
DDX_Text(pDX, IDC_TESTURL, m_szTestURL);
|
||||
DDX_Text(pDX, IDC_TESTCGI, m_szTestCGI);
|
||||
DDX_Check(pDX, IDC_CHECK1, m_bDebugging);
|
||||
DDX_Text(pDX, IDC_EDIT1, m_sDebugFlags);
|
||||
DDX_Check(pDX, IDC_OVERRIDE, m_bUseCustom);
|
||||
//}}AFX_DATA_MAP
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CPickerDlg, CDialog)
|
||||
//{{AFX_MSG_MAP(CPickerDlg)
|
||||
ON_BN_CLICKED(IDOK, OnOk)
|
||||
ON_LBN_DBLCLK(IDC_LISTBROWSER, OnDblclkListbrowser)
|
||||
//}}AFX_MSG_MAP
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CPickerDlg message handlers
|
||||
|
||||
BOOL CPickerDlg::OnInitDialog()
|
||||
{
|
||||
CDialog::OnInitDialog();
|
||||
|
||||
for (int i = 0; i < sizeof(aControls) / sizeof(aControls[0]); i++)
|
||||
{
|
||||
m_lbPicker.AddString(aControls[i].szName);
|
||||
}
|
||||
m_lbPicker.SetCurSel(0);
|
||||
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
// EXCEPTION: OCX Property Pages should return FALSE
|
||||
}
|
||||
|
||||
|
||||
void CPickerDlg::OnOk()
|
||||
{
|
||||
UpdateData();
|
||||
|
||||
int nItem = m_lbPicker.GetCurSel();
|
||||
if (nItem == LB_ERR)
|
||||
{
|
||||
AfxMessageBox(IDS_CHOOSEBROWSER);
|
||||
return;
|
||||
}
|
||||
|
||||
m_clsid = *aControls[nItem].clsid;
|
||||
|
||||
CWinApp *pApp = AfxGetApp();
|
||||
pApp->WriteProfileString(SECTION_TEST, KEY_TESTURL, m_szTestURL);
|
||||
pApp->WriteProfileString(SECTION_TEST, KEY_TESTCGI, m_szTestCGI);
|
||||
|
||||
if (m_bDebugging)
|
||||
{
|
||||
putenv("NSPR_LOG_FILE=.\\mozilla.log");
|
||||
putenv(m_sDebugFlags);
|
||||
}
|
||||
|
||||
EndDialog(IDOK);
|
||||
}
|
||||
|
||||
|
||||
void CPickerDlg::OnDblclkListbrowser()
|
||||
{
|
||||
OnOk();
|
||||
}
|
||||
54
mozilla/embedding/browser/activex/tests/cbrowse/PickerDlg.h
Normal file
@@ -0,0 +1,54 @@
|
||||
#if !defined(AFX_PICKERDLG_H__648FC652_D34B_11D2_A255_000000000000__INCLUDED_)
|
||||
#define AFX_PICKERDLG_H__648FC652_D34B_11D2_A255_000000000000__INCLUDED_
|
||||
|
||||
#if _MSC_VER >= 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER >= 1000
|
||||
// PickerDlg.h : header file
|
||||
//
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CPickerDlg dialog
|
||||
|
||||
class CPickerDlg : public CDialog
|
||||
{
|
||||
// Construction
|
||||
public:
|
||||
CPickerDlg(CWnd* pParent = NULL); // standard constructor
|
||||
|
||||
// Dialog Data
|
||||
//{{AFX_DATA(CPickerDlg)
|
||||
enum { IDD = IDD_PICKBROWSER };
|
||||
CListBox m_lbPicker;
|
||||
CString m_szTestURL;
|
||||
CString m_szTestCGI;
|
||||
BOOL m_bDebugging;
|
||||
CString m_sDebugFlags;
|
||||
BOOL m_bUseCustom;
|
||||
//}}AFX_DATA
|
||||
|
||||
CLSID m_clsid;
|
||||
|
||||
// Overrides
|
||||
// ClassWizard generated virtual function overrides
|
||||
//{{AFX_VIRTUAL(CPickerDlg)
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
|
||||
//}}AFX_VIRTUAL
|
||||
|
||||
// Implementation
|
||||
protected:
|
||||
|
||||
// Generated message map functions
|
||||
//{{AFX_MSG(CPickerDlg)
|
||||
afx_msg void OnOk();
|
||||
virtual BOOL OnInitDialog();
|
||||
afx_msg void OnDblclkListbrowser();
|
||||
//}}AFX_MSG
|
||||
DECLARE_MESSAGE_MAP()
|
||||
};
|
||||
|
||||
//{{AFX_INSERT_LOCATION}}
|
||||
// Microsoft Developer Studio will insert additional declarations immediately before the previous line.
|
||||
|
||||
#endif // !defined(AFX_PICKERDLG_H__648FC652_D34B_11D2_A255_000000000000__INCLUDED_)
|
||||
@@ -0,0 +1,4 @@
|
||||
' A simple test just to prove things are sane
|
||||
|
||||
OutputString "Simple Navigation Test"
|
||||
WebBrowser.Navigate TestURL
|
||||
@@ -0,0 +1,4 @@
|
||||
' Opens a new window
|
||||
|
||||
OutputString "Navigate in new window"
|
||||
WebBrowser.Navigate TestURL, 1
|
||||
@@ -0,0 +1,6 @@
|
||||
' Opens a URL and POST data
|
||||
|
||||
|
||||
sPostData = "name1=value1"
|
||||
OutputString "CGI script POST test to URL " + TestCGI + sPostData
|
||||
WebBrowser.Navigate TestCGI, 0, , sPostData
|
||||
13
mozilla/embedding/browser/activex/tests/cbrowse/StdAfx.cpp
Normal file
@@ -0,0 +1,13 @@
|
||||
// stdafx.cpp : source file that includes just the standard includes
|
||||
// cbrowse.pch will be the pre-compiled header
|
||||
// stdafx.obj will contain the pre-compiled type information
|
||||
|
||||
#include "stdafx.h"
|
||||
|
||||
#ifdef _ATL_STATIC_REGISTRY
|
||||
#include <statreg.h>
|
||||
#endif
|
||||
#include <atlimpl.cpp>
|
||||
#include <atlctl.cpp>
|
||||
#include <atlwin.cpp>
|
||||
|
||||
75
mozilla/embedding/browser/activex/tests/cbrowse/StdAfx.h
Normal file
@@ -0,0 +1,75 @@
|
||||
// stdafx.h : include file for standard system include files,
|
||||
// or project specific include files that are used frequently, but
|
||||
// are changed infrequently
|
||||
//
|
||||
|
||||
#if !defined(AFX_STDAFX_H__5121F5E8_5324_11D2_93E1_000000000000__INCLUDED_)
|
||||
#define AFX_STDAFX_H__5121F5E8_5324_11D2_93E1_000000000000__INCLUDED_
|
||||
|
||||
#if _MSC_VER >= 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER >= 1000
|
||||
|
||||
#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers
|
||||
|
||||
#include <afxwin.h> // MFC core and standard components
|
||||
#include <afxext.h> // MFC extensions
|
||||
#include <afxdisp.h> // MFC OLE automation classes
|
||||
#ifndef _AFX_NO_AFXCMN_SUPPORT
|
||||
#include <afxcmn.h> // MFC support for Windows Common Controls
|
||||
#endif // _AFX_NO_AFXCMN_SUPPORT
|
||||
|
||||
#define _ATL_APARTMENT_THREADED
|
||||
#define _ATL_DEBUG_INTERFACES
|
||||
|
||||
// ATL headers
|
||||
#include <atlbase.h>
|
||||
|
||||
class CBrowseModule : public CComModule
|
||||
{
|
||||
public:
|
||||
DWORD dwThreadID;
|
||||
|
||||
LPCTSTR FindOneOf(LPCTSTR p1, LPCTSTR p2);
|
||||
virtual LONG Unlock();
|
||||
virtual LONG Lock();
|
||||
};
|
||||
|
||||
extern CBrowseModule _Module;
|
||||
|
||||
#include <atlcom.h>
|
||||
#include <atlctl.h>
|
||||
|
||||
#include <exdisp.h>
|
||||
#include <mshtml.h>
|
||||
#include <mshtmhst.h>
|
||||
#include <activscp.h>
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <map>
|
||||
#include <list>
|
||||
|
||||
#include "..\..\ActiveXTypes.h"
|
||||
#include "..\..\BrowserDiagnostics.h"
|
||||
#include "..\..\PropertyList.h"
|
||||
#include "..\..\PropertyBag.h"
|
||||
#include "..\..\ControlSiteIPFrame.h"
|
||||
#include "..\..\ControlSite.h"
|
||||
#include "..\..\ActiveScriptSite.h"
|
||||
|
||||
#include "CBrowserCtlSite.h"
|
||||
#include "Tests.h"
|
||||
|
||||
#define SECTION_TEST _T("Test")
|
||||
#define KEY_TESTURL _T("TestURL")
|
||||
#define KEY_TESTCGI _T("TestCGI")
|
||||
#define KEY_TESTURL_DEFAULTVALUE _T("http://www.mozilla.org")
|
||||
#define KEY_TESTCGI_DEFAULTVALUE _T("http://www.mozilla.org")
|
||||
|
||||
|
||||
|
||||
//{{AFX_INSERT_LOCATION}}
|
||||
// Microsoft Developer Studio will insert additional declarations immediately before the previous line.
|
||||
|
||||
#endif // !defined(AFX_STDAFX_H__5121F5E8_5324_11D2_93E1_000000000000__INCLUDED_)
|
||||
69
mozilla/embedding/browser/activex/tests/cbrowse/TabDOM.cpp
Normal file
@@ -0,0 +1,69 @@
|
||||
// TabDOM.cpp : implementation file
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "cbrowse.h"
|
||||
#include "TabDOM.h"
|
||||
#include "CBrowseDlg.h"
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define new DEBUG_NEW
|
||||
#undef THIS_FILE
|
||||
static char THIS_FILE[] = __FILE__;
|
||||
#endif
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CTabDOM property page
|
||||
|
||||
IMPLEMENT_DYNCREATE(CTabDOM, CPropertyPage)
|
||||
|
||||
CTabDOM::CTabDOM() : CPropertyPage(CTabDOM::IDD, CTabDOM::IDD)
|
||||
{
|
||||
//{{AFX_DATA_INIT(CTabDOM)
|
||||
// NOTE: the ClassWizard will add member initialization here
|
||||
//}}AFX_DATA_INIT
|
||||
}
|
||||
|
||||
|
||||
CTabDOM::~CTabDOM()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
void CTabDOM::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CPropertyPage::DoDataExchange(pDX);
|
||||
//{{AFX_DATA_MAP(CTabDOM)
|
||||
DDX_Control(pDX, IDC_DOMLIST, m_tcDOM);
|
||||
//}}AFX_DATA_MAP
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CTabDOM, CPropertyPage)
|
||||
//{{AFX_MSG_MAP(CTabDOM)
|
||||
ON_BN_CLICKED(IDC_REFRESHDOM, OnRefreshDOM)
|
||||
//}}AFX_MSG_MAP
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CTabDOM message handlers
|
||||
|
||||
void CTabDOM::OnRefreshDOM()
|
||||
{
|
||||
if (m_pBrowseDlg)
|
||||
{
|
||||
m_pBrowseDlg->OnRefreshDOM();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
BOOL CTabDOM::OnInitDialog()
|
||||
{
|
||||
CPropertyPage::OnInitDialog();
|
||||
|
||||
// Create the DOM tree
|
||||
m_tcDOM.SetImageList(&m_pBrowseDlg->m_cImageList, TVSIL_NORMAL);
|
||||
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
// EXCEPTION: OCX Property Pages should return FALSE
|
||||
}
|
||||
54
mozilla/embedding/browser/activex/tests/cbrowse/TabDOM.h
Normal file
@@ -0,0 +1,54 @@
|
||||
#if !defined(AFX_TABDOM_H__5216DE08_12D4_11D3_9407_000000000000__INCLUDED_)
|
||||
#define AFX_TABDOM_H__5216DE08_12D4_11D3_9407_000000000000__INCLUDED_
|
||||
|
||||
#if _MSC_VER > 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER > 1000
|
||||
// TabDOM.h : header file
|
||||
//
|
||||
|
||||
class CBrowseDlg;
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CTabDOM dialog
|
||||
|
||||
class CTabDOM : public CPropertyPage
|
||||
{
|
||||
DECLARE_DYNCREATE(CTabDOM)
|
||||
|
||||
// Construction
|
||||
public:
|
||||
CTabDOM();
|
||||
~CTabDOM();
|
||||
|
||||
CBrowseDlg *m_pBrowseDlg;
|
||||
|
||||
// Dialog Data
|
||||
//{{AFX_DATA(CTabDOM)
|
||||
enum { IDD = IDD_TAB_DOM };
|
||||
CTreeCtrl m_tcDOM;
|
||||
//}}AFX_DATA
|
||||
|
||||
|
||||
// Overrides
|
||||
// ClassWizard generate virtual function overrides
|
||||
//{{AFX_VIRTUAL(CTabDOM)
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
|
||||
//}}AFX_VIRTUAL
|
||||
|
||||
// Implementation
|
||||
protected:
|
||||
// Generated message map functions
|
||||
//{{AFX_MSG(CTabDOM)
|
||||
afx_msg void OnRefreshDOM();
|
||||
virtual BOOL OnInitDialog();
|
||||
//}}AFX_MSG
|
||||
DECLARE_MESSAGE_MAP()
|
||||
|
||||
};
|
||||
|
||||
//{{AFX_INSERT_LOCATION}}
|
||||
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
|
||||
|
||||
#endif // !defined(AFX_TABDOM_H__5216DE08_12D4_11D3_9407_000000000000__INCLUDED_)
|
||||
@@ -0,0 +1,50 @@
|
||||
// TabMessages.cpp : implementation file
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "cbrowse.h"
|
||||
#include "TabMessages.h"
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define new DEBUG_NEW
|
||||
#undef THIS_FILE
|
||||
static char THIS_FILE[] = __FILE__;
|
||||
#endif
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CTabMessages property page
|
||||
|
||||
IMPLEMENT_DYNCREATE(CTabMessages, CPropertyPage)
|
||||
|
||||
CTabMessages::CTabMessages() : CPropertyPage(CTabMessages::IDD, CTabMessages::IDD)
|
||||
{
|
||||
//{{AFX_DATA_INIT(CTabMessages)
|
||||
m_szStatus = _T("");
|
||||
//}}AFX_DATA_INIT
|
||||
}
|
||||
|
||||
|
||||
CTabMessages::~CTabMessages()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
void CTabMessages::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CPropertyPage::DoDataExchange(pDX);
|
||||
//{{AFX_DATA_MAP(CTabMessages)
|
||||
DDX_Control(pDX, IDC_PROGRESS, m_pcProgress);
|
||||
DDX_Control(pDX, IDC_OUTPUT, m_lbMessages);
|
||||
DDX_Text(pDX, IDC_STATUS, m_szStatus);
|
||||
//}}AFX_DATA_MAP
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CTabMessages, CPropertyPage)
|
||||
//{{AFX_MSG_MAP(CTabMessages)
|
||||
// NOTE: the ClassWizard will add message map macros here
|
||||
//}}AFX_MSG_MAP
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CTabMessages message handlers
|
||||
@@ -0,0 +1,55 @@
|
||||
#if !defined(AFX_TABMESSAGES_H__33D0A350_12E1_11D3_9407_000000000000__INCLUDED_)
|
||||
#define AFX_TABMESSAGES_H__33D0A350_12E1_11D3_9407_000000000000__INCLUDED_
|
||||
|
||||
#if _MSC_VER > 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER > 1000
|
||||
// TabMessages.h : header file
|
||||
//
|
||||
|
||||
class CBrowseDlg;
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CTabMessages dialog
|
||||
|
||||
class CTabMessages : public CPropertyPage
|
||||
{
|
||||
DECLARE_DYNCREATE(CTabMessages)
|
||||
|
||||
// Construction
|
||||
public:
|
||||
CTabMessages();
|
||||
~CTabMessages();
|
||||
|
||||
CBrowseDlg *m_pBrowseDlg;
|
||||
|
||||
// Dialog Data
|
||||
//{{AFX_DATA(CTabMessages)
|
||||
enum { IDD = IDD_TAB_MESSAGES };
|
||||
CProgressCtrl m_pcProgress;
|
||||
CListBox m_lbMessages;
|
||||
CString m_szStatus;
|
||||
//}}AFX_DATA
|
||||
|
||||
|
||||
// Overrides
|
||||
// ClassWizard generate virtual function overrides
|
||||
//{{AFX_VIRTUAL(CTabMessages)
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
|
||||
//}}AFX_VIRTUAL
|
||||
|
||||
// Implementation
|
||||
protected:
|
||||
// Generated message map functions
|
||||
//{{AFX_MSG(CTabMessages)
|
||||
// NOTE: the ClassWizard will add member functions here
|
||||
//}}AFX_MSG
|
||||
DECLARE_MESSAGE_MAP()
|
||||
|
||||
};
|
||||
|
||||
//{{AFX_INSERT_LOCATION}}
|
||||
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
|
||||
|
||||
#endif // !defined(AFX_TABMESSAGES_H__33D0A350_12E1_11D3_9407_000000000000__INCLUDED_)
|
||||
114
mozilla/embedding/browser/activex/tests/cbrowse/TabTests.cpp
Normal file
@@ -0,0 +1,114 @@
|
||||
// TabTests.cpp : implementation file
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "cbrowse.h"
|
||||
#include "TabTests.h"
|
||||
#include "CBrowseDlg.h"
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define new DEBUG_NEW
|
||||
#undef THIS_FILE
|
||||
static char THIS_FILE[] = __FILE__;
|
||||
#endif
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CTabTests property page
|
||||
|
||||
IMPLEMENT_DYNCREATE(CTabTests, CPropertyPage)
|
||||
|
||||
CTabTests::CTabTests() : CPropertyPage(CTabTests::IDD, CTabTests::IDD)
|
||||
{
|
||||
//{{AFX_DATA_INIT(CTabTests)
|
||||
m_szTestDescription = _T("");
|
||||
//}}AFX_DATA_INIT
|
||||
}
|
||||
|
||||
|
||||
CTabTests::~CTabTests()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
void CTabTests::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CPropertyPage::DoDataExchange(pDX);
|
||||
//{{AFX_DATA_MAP(CTabTests)
|
||||
DDX_Control(pDX, IDC_RUNTEST, m_btnRunTest);
|
||||
DDX_Control(pDX, IDC_TESTLIST, m_tcTests);
|
||||
DDX_Text(pDX, IDC_TESTDESCRIPTION, m_szTestDescription);
|
||||
//}}AFX_DATA_MAP
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CTabTests, CPropertyPage)
|
||||
//{{AFX_MSG_MAP(CTabTests)
|
||||
ON_BN_CLICKED(IDC_RUNTEST, OnRunTest)
|
||||
ON_NOTIFY(TVN_SELCHANGED, IDC_TESTLIST, OnSelchangedTestlist)
|
||||
ON_NOTIFY(NM_DBLCLK, IDC_TESTLIST, OnDblclkTestlist)
|
||||
//}}AFX_MSG_MAP
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CTabTests message handlers
|
||||
|
||||
void CTabTests::OnRunTest()
|
||||
{
|
||||
m_pBrowseDlg->OnRunTest();
|
||||
}
|
||||
|
||||
|
||||
void CTabTests::OnSelchangedTestlist(NMHDR* pNMHDR, LRESULT* pResult)
|
||||
{
|
||||
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
|
||||
|
||||
BOOL bItemSelected = FALSE;
|
||||
m_szTestDescription.Empty();
|
||||
|
||||
HTREEITEM hItem = m_tcTests.GetNextItem(NULL, TVGN_FIRSTVISIBLE);
|
||||
while (hItem)
|
||||
{
|
||||
UINT nState;
|
||||
|
||||
nState = m_tcTests.GetItemState(hItem, TVIS_SELECTED);
|
||||
if (nState & TVIS_SELECTED)
|
||||
{
|
||||
bItemSelected = TRUE;
|
||||
if (m_tcTests.ItemHasChildren(hItem))
|
||||
{
|
||||
TestSet *pTestSet = (TestSet *) m_tcTests.GetItemData(hItem);
|
||||
m_szTestDescription = pTestSet->szDesc;
|
||||
}
|
||||
else
|
||||
{
|
||||
Test *pTest = (Test *) m_tcTests.GetItemData(hItem);
|
||||
m_szTestDescription = pTest->szDesc;
|
||||
}
|
||||
}
|
||||
|
||||
hItem = m_tcTests.GetNextItem(hItem, TVGN_NEXTVISIBLE);
|
||||
}
|
||||
|
||||
UpdateData(FALSE);
|
||||
m_btnRunTest.EnableWindow(bItemSelected);
|
||||
|
||||
*pResult = 0;
|
||||
}
|
||||
|
||||
|
||||
void CTabTests::OnDblclkTestlist(NMHDR* pNMHDR, LRESULT* pResult)
|
||||
{
|
||||
OnRunTest();
|
||||
*pResult = 0;
|
||||
}
|
||||
|
||||
|
||||
BOOL CTabTests::OnInitDialog()
|
||||
{
|
||||
CPropertyPage::OnInitDialog();
|
||||
|
||||
m_pBrowseDlg->PopulateTests();
|
||||
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
// EXCEPTION: OCX Property Pages should return FALSE
|
||||
}
|
||||
58
mozilla/embedding/browser/activex/tests/cbrowse/TabTests.h
Normal file
@@ -0,0 +1,58 @@
|
||||
#if !defined(AFX_TABTESTS_H__33D0A351_12E1_11D3_9407_000000000000__INCLUDED_)
|
||||
#define AFX_TABTESTS_H__33D0A351_12E1_11D3_9407_000000000000__INCLUDED_
|
||||
|
||||
#if _MSC_VER > 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER > 1000
|
||||
// TabTests.h : header file
|
||||
//
|
||||
|
||||
class CBrowseDlg;
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CTabTests dialog
|
||||
|
||||
class CTabTests : public CPropertyPage
|
||||
{
|
||||
DECLARE_DYNCREATE(CTabTests)
|
||||
|
||||
// Construction
|
||||
public:
|
||||
CTabTests();
|
||||
~CTabTests();
|
||||
|
||||
CBrowseDlg *m_pBrowseDlg;
|
||||
|
||||
// Dialog Data
|
||||
//{{AFX_DATA(CTabTests)
|
||||
enum { IDD = IDD_TAB_TESTS };
|
||||
CButton m_btnRunTest;
|
||||
CTreeCtrl m_tcTests;
|
||||
CString m_szTestDescription;
|
||||
//}}AFX_DATA
|
||||
|
||||
|
||||
// Overrides
|
||||
// ClassWizard generate virtual function overrides
|
||||
//{{AFX_VIRTUAL(CTabTests)
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
|
||||
//}}AFX_VIRTUAL
|
||||
|
||||
// Implementation
|
||||
protected:
|
||||
// Generated message map functions
|
||||
//{{AFX_MSG(CTabTests)
|
||||
afx_msg void OnRunTest();
|
||||
afx_msg void OnSelchangedTestlist(NMHDR* pNMHDR, LRESULT* pResult);
|
||||
afx_msg void OnDblclkTestlist(NMHDR* pNMHDR, LRESULT* pResult);
|
||||
virtual BOOL OnInitDialog();
|
||||
//}}AFX_MSG
|
||||
DECLARE_MESSAGE_MAP()
|
||||
|
||||
};
|
||||
|
||||
//{{AFX_INSERT_LOCATION}}
|
||||
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
|
||||
|
||||
#endif // !defined(AFX_TABTESTS_H__33D0A351_12E1_11D3_9407_000000000000__INCLUDED_)
|
||||
@@ -0,0 +1,98 @@
|
||||
// TestScriptHelper.cpp : Implementation of CTestScriptHelper
|
||||
#include "stdafx.h"
|
||||
#include "Cbrowse.h"
|
||||
#include "TestScriptHelper.h"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CTestScriptHelper
|
||||
|
||||
|
||||
STDMETHODIMP CTestScriptHelper::OutputString(BSTR bstrMessage)
|
||||
{
|
||||
AFX_MANAGE_STATE(AfxGetStaticModuleState())
|
||||
|
||||
if (bstrMessage == NULL)
|
||||
{
|
||||
return E_INVALIDARG;
|
||||
}
|
||||
if (m_pBrowserInfo == NULL)
|
||||
{
|
||||
return E_UNEXPECTED;
|
||||
}
|
||||
|
||||
USES_CONVERSION;
|
||||
m_pBrowserInfo->OutputString(OLE2T(bstrMessage));
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
|
||||
STDMETHODIMP CTestScriptHelper::get_WebBrowser(LPDISPATCH *pVal)
|
||||
{
|
||||
AFX_MANAGE_STATE(AfxGetStaticModuleState())
|
||||
|
||||
if (pVal == NULL)
|
||||
{
|
||||
return E_INVALIDARG;
|
||||
}
|
||||
|
||||
*pVal = NULL;
|
||||
if (m_pBrowserInfo == NULL)
|
||||
{
|
||||
return E_UNEXPECTED;
|
||||
}
|
||||
|
||||
CIPtr(IWebBrowserApp) spWebBrowserApp;
|
||||
m_pBrowserInfo->GetWebBrowser(&spWebBrowserApp);
|
||||
return spWebBrowserApp->QueryInterface(IID_IDispatch, (void **) pVal);
|
||||
}
|
||||
|
||||
|
||||
STDMETHODIMP CTestScriptHelper::put_Result(TestResult newVal)
|
||||
{
|
||||
AFX_MANAGE_STATE(AfxGetStaticModuleState())
|
||||
|
||||
if (m_pBrowserInfo == NULL)
|
||||
{
|
||||
return E_UNEXPECTED;
|
||||
}
|
||||
|
||||
m_pBrowserInfo->nResult = newVal;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
|
||||
STDMETHODIMP CTestScriptHelper::get_TestURL(BSTR *pVal)
|
||||
{
|
||||
AFX_MANAGE_STATE(AfxGetStaticModuleState())
|
||||
|
||||
if (pVal == NULL)
|
||||
{
|
||||
return E_INVALIDARG;
|
||||
}
|
||||
if (m_pBrowserInfo)
|
||||
{
|
||||
USES_CONVERSION;
|
||||
*pVal = SysAllocString(T2OLE(m_pBrowserInfo->szTestURL));
|
||||
}
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
|
||||
STDMETHODIMP CTestScriptHelper::get_TestCGI(BSTR *pVal)
|
||||
{
|
||||
AFX_MANAGE_STATE(AfxGetStaticModuleState())
|
||||
|
||||
if (pVal == NULL)
|
||||
{
|
||||
return E_INVALIDARG;
|
||||
}
|
||||
if (m_pBrowserInfo)
|
||||
{
|
||||
USES_CONVERSION;
|
||||
*pVal = SysAllocString(T2OLE(m_pBrowserInfo->szTestCGI));
|
||||
}
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
// TestScriptHelper.h : Declaration of the CTestScriptHelper
|
||||
|
||||
#ifndef __TESTSCRIPTHELPER_H_
|
||||
#define __TESTSCRIPTHELPER_H_
|
||||
|
||||
#include "resource.h" // main symbols
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CTestScriptHelper
|
||||
class ATL_NO_VTABLE CTestScriptHelper :
|
||||
public CComObjectRootEx<CComSingleThreadModel>,
|
||||
public CComCoClass<CTestScriptHelper, &CLSID_TestScriptHelper>,
|
||||
public IDispatchImpl<DITestScriptHelper, &IID_DITestScriptHelper, &LIBID_CbrowseLib>
|
||||
{
|
||||
public:
|
||||
CTestScriptHelper()
|
||||
{
|
||||
m_pBrowserInfo = NULL;
|
||||
}
|
||||
|
||||
BrowserInfo *m_pBrowserInfo;
|
||||
|
||||
DECLARE_REGISTRY_RESOURCEID(IDR_TESTSCRIPTHELPER)
|
||||
|
||||
DECLARE_PROTECT_FINAL_CONSTRUCT()
|
||||
|
||||
BEGIN_COM_MAP(CTestScriptHelper)
|
||||
COM_INTERFACE_ENTRY(DITestScriptHelper)
|
||||
COM_INTERFACE_ENTRY(IDispatch)
|
||||
END_COM_MAP()
|
||||
|
||||
// DITestScriptHelper
|
||||
public:
|
||||
STDMETHOD(get_TestCGI)(/*[out, retval]*/ BSTR *pVal);
|
||||
STDMETHOD(get_TestURL)(/*[out, retval]*/ BSTR *pVal);
|
||||
STDMETHOD(put_Result)(/*[in]*/ TestResult newVal);
|
||||
STDMETHOD(get_WebBrowser)(/*[out, retval]*/ LPDISPATCH *pVal);
|
||||
STDMETHOD(OutputString)(BSTR bstrMessage);
|
||||
};
|
||||
|
||||
typedef CComObject<CTestScriptHelper> CTestScriptHelperInstance;
|
||||
|
||||
#endif //__TESTSCRIPTHELPER_H_
|
||||
@@ -0,0 +1,24 @@
|
||||
HKCR
|
||||
{
|
||||
Cbrowse.TestScriptHelper.1 = s 'TestScriptHelper Class'
|
||||
{
|
||||
CLSID = s '{95AF1AB2-FA66-11D2-A284-000000000000}'
|
||||
}
|
||||
Cbrowse.TestScriptHelper = s 'TestScriptHelper Class'
|
||||
{
|
||||
CLSID = s '{95AF1AB2-FA66-11D2-A284-000000000000}'
|
||||
CurVer = s 'Cbrowse.TestScriptHelper.1'
|
||||
}
|
||||
NoRemove CLSID
|
||||
{
|
||||
ForceRemove {95AF1AB2-FA66-11D2-A284-000000000000} = s 'TestScriptHelper Class'
|
||||
{
|
||||
ProgID = s 'Cbrowse.TestScriptHelper.1'
|
||||
VersionIndependentProgID = s 'Cbrowse.TestScriptHelper'
|
||||
ForceRemove 'Programmable'
|
||||
LocalServer32 = s '%MODULE%'
|
||||
val AppID = s '{5B209214-F756-11D2-A27F-000000000000}'
|
||||
'TypeLib' = s '{5B209213-F756-11D2-A27F-000000000000}'
|
||||
}
|
||||
}
|
||||
}
|
||||
491
mozilla/embedding/browser/activex/tests/cbrowse/Tests.cpp
Normal file
@@ -0,0 +1,491 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* 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):
|
||||
*/
|
||||
|
||||
#include "stdafx.h"
|
||||
|
||||
#include "resource.h"
|
||||
#include "Cbrowse.h"
|
||||
#include "CBrowseDlg.h"
|
||||
#include "TestScriptHelper.h"
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
void BrowserInfo::OutputString(const TCHAR *szMessage, ...)
|
||||
{
|
||||
TCHAR szBuffer[256];
|
||||
|
||||
va_list cArgs;
|
||||
va_start(cArgs, szMessage);
|
||||
_vstprintf(szBuffer, szMessage, cArgs);
|
||||
va_end(cArgs);
|
||||
|
||||
CString szOutput;
|
||||
szOutput.Format(_T(" Test: %s"), szBuffer);
|
||||
|
||||
pBrowseDlg->OutputString(szOutput);
|
||||
}
|
||||
|
||||
|
||||
HRESULT BrowserInfo::GetWebBrowser(IWebBrowserApp **pWebBrowser)
|
||||
{
|
||||
if (pIUnknown == NULL)
|
||||
{
|
||||
return E_FAIL;
|
||||
}
|
||||
return pIUnknown->QueryInterface(IID_IWebBrowserApp, (void **) pWebBrowser);
|
||||
}
|
||||
|
||||
|
||||
HRESULT BrowserInfo::GetDocument(IHTMLDocument2 **pDocument)
|
||||
{
|
||||
CIPtr(IWebBrowserApp) cpWebBrowser;
|
||||
if (FAILED(GetWebBrowser(&cpWebBrowser)))
|
||||
{
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
CIPtr(IDispatch) cpDispDocument;
|
||||
cpWebBrowser->get_Document(&cpDispDocument);
|
||||
if (cpDispDocument == NULL)
|
||||
{
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
return cpDispDocument->QueryInterface(IID_IHTMLDocument2, (void **) pDocument);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
struct InterfaceInfo
|
||||
{
|
||||
const IID *piid;
|
||||
const TCHAR *szName;
|
||||
};
|
||||
|
||||
|
||||
static InterfaceInfo aDocIIDs[] =
|
||||
{
|
||||
{ &IID_IOleCommandTarget, _T("IOleCommandTarget") },
|
||||
{ &IID_IHTMLDocument, _T("IHTMLDocument") },
|
||||
{ &IID_IHTMLDocument2, _T("IHTMLDocument2") },
|
||||
{ &IID_IHTMLElementCollection, _T("IHTMLElementCollection") },
|
||||
{ &IID_IHTMLElement, _T("IHTMLElement") }
|
||||
};
|
||||
|
||||
|
||||
TestResult __cdecl tstDocument(BrowserInfo &cInfo)
|
||||
{
|
||||
CIPtr(IHTMLDocument2) cpDocElement;
|
||||
cInfo.GetDocument(&cpDocElement);
|
||||
if (cpDocElement == NULL)
|
||||
{
|
||||
cInfo.OutputString(_T("Error: No document"));
|
||||
return trFailed;
|
||||
}
|
||||
|
||||
// Dump out all the interfaces supported by the document element
|
||||
for (int i = 0; i < sizeof(aDocIIDs) / sizeof(aDocIIDs[0]); i++)
|
||||
{
|
||||
IUnknown *pUnkI = NULL;
|
||||
if (SUCCEEDED(cpDocElement->QueryInterface(*(aDocIIDs[i].piid), (void **) &pUnkI)))
|
||||
{
|
||||
cInfo.OutputString(_T("Info: Document supports interface %s"), aDocIIDs[i].szName);
|
||||
pUnkI->Release();
|
||||
}
|
||||
else
|
||||
{
|
||||
cInfo.OutputString(_T("Info: Document doesn't support interface %s"), aDocIIDs[i].szName);
|
||||
}
|
||||
}
|
||||
|
||||
return trPassed;
|
||||
}
|
||||
|
||||
|
||||
TestResult __cdecl tstCollectionEnum(BrowserInfo &cInfo)
|
||||
{
|
||||
CIPtr(IHTMLDocument2) cpDocElement;
|
||||
cInfo.GetDocument(&cpDocElement);
|
||||
if (cpDocElement == NULL)
|
||||
{
|
||||
cInfo.OutputString(_T("Error: No document"));
|
||||
return trFailed;
|
||||
}
|
||||
|
||||
CIPtr(IHTMLElementCollection) cpColl;
|
||||
HRESULT hr = cpDocElement->get_all( &cpColl );
|
||||
if (hr == S_OK)
|
||||
{
|
||||
CComPtr<IUnknown> cpUnkEnum;
|
||||
cpColl->get__newEnum(&cpUnkEnum);
|
||||
if (cpUnkEnum == NULL)
|
||||
{
|
||||
cInfo.OutputString(_T("Error: No collection"));
|
||||
return trFailed;
|
||||
}
|
||||
|
||||
CIPtr(IEnumVARIANT) cpEnumVARIANT = cpUnkEnum;
|
||||
if (cpEnumVARIANT)
|
||||
{
|
||||
cInfo.OutputString(_T("Collection has IEnumVARIANT"));
|
||||
}
|
||||
CIPtr(IEnumUnknown) cpEnumUnknown = cpUnkEnum;
|
||||
if (cpEnumUnknown)
|
||||
{
|
||||
cInfo.OutputString(_T("Collection has IEnumUnknown"));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
cInfo.OutputString(_T("Error: No collection from document"));
|
||||
return trFailed;
|
||||
}
|
||||
|
||||
return trPassed;
|
||||
}
|
||||
|
||||
|
||||
void tstDrillerLevel(BrowserInfo &cInfo, IHTMLElementCollection *pCollection, int nLevel)
|
||||
{
|
||||
if (pCollection == NULL)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
LONG nElements = 0;;
|
||||
HRESULT hr = pCollection->get_length( &nElements );
|
||||
if (FAILED(hr))
|
||||
{
|
||||
cInfo.OutputString(_T("Error: Collection failed to return number of elements!"));
|
||||
return;
|
||||
}
|
||||
|
||||
USES_CONVERSION;
|
||||
char szLevel[256];
|
||||
memset(szLevel, 0, sizeof(szLevel));
|
||||
memset(szLevel, ' ', nLevel);
|
||||
TCHAR *szIndent = A2T(szLevel);
|
||||
|
||||
cInfo.OutputString(_T("%sParsing collection..."), szIndent);
|
||||
cInfo.OutputString(_T("%sCollection with %d elements"), szIndent, (int) nElements);
|
||||
|
||||
for ( int i=0; i< nElements; i++ )
|
||||
{
|
||||
VARIANT varIndex;
|
||||
varIndex.vt = VT_UINT;
|
||||
varIndex.lVal = i;
|
||||
|
||||
VARIANT var2;
|
||||
VariantInit( &var2 );
|
||||
CIPtr(IDispatch) cpDisp;
|
||||
|
||||
hr = pCollection->item( varIndex, var2, &cpDisp );
|
||||
if ( hr != S_OK )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
CIPtr(IHTMLElement) cpElem;
|
||||
|
||||
hr = cpDisp->QueryInterface( IID_IHTMLElement, (void **)&cpElem );
|
||||
if ( hr == S_OK )
|
||||
{
|
||||
|
||||
BSTR bstrTagName = NULL;
|
||||
hr = cpElem->get_tagName(&bstrTagName);
|
||||
CString szTagName = bstrTagName;
|
||||
SysFreeString(bstrTagName);
|
||||
|
||||
BSTR bstrID = NULL;
|
||||
hr = cpElem->get_id(&bstrID);
|
||||
CString szID = bstrID;
|
||||
SysFreeString(bstrID);
|
||||
|
||||
BSTR bstrClassName = NULL;
|
||||
hr = cpElem->get_className(&bstrClassName);
|
||||
CString szClassName = bstrClassName;
|
||||
SysFreeString(bstrClassName);
|
||||
|
||||
cInfo.OutputString(_T("%sElement at %d is %s"), szIndent, i, szTagName);
|
||||
cInfo.OutputString(_T("%s id=%s"), szIndent, szID);
|
||||
cInfo.OutputString(_T("%s classname=%s"), szIndent, szClassName);
|
||||
|
||||
CIPtr(IHTMLImgElement) cpImgElem;
|
||||
hr = cpDisp->QueryInterface( IID_IHTMLImgElement, (void **)&cpImgElem );
|
||||
if ( hr == S_OK )
|
||||
{
|
||||
// cpImgElem->get_href(&bstr);
|
||||
}
|
||||
else
|
||||
{
|
||||
CIPtr(IHTMLAnchorElement) cpAnchElem;
|
||||
hr = cpDisp->QueryInterface( IID_IHTMLAnchorElement, (void **)&cpAnchElem );
|
||||
if ( hr == S_OK )
|
||||
{
|
||||
// cpAnchElem->get_href(&bstr);
|
||||
}
|
||||
}
|
||||
|
||||
CIPtr(IDispatch) cpDispColl;
|
||||
hr = cpElem->get_children(&cpDispColl);
|
||||
if (hr == S_OK)
|
||||
{
|
||||
CIPtr(IHTMLElementCollection) cpColl = cpDispColl;
|
||||
tstDrillerLevel(cInfo, cpColl, nLevel + 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
cInfo.OutputString(_T("%sEnd collection"), szIndent);
|
||||
}
|
||||
|
||||
|
||||
TestResult __cdecl tstDriller(BrowserInfo &cInfo)
|
||||
{
|
||||
CIPtr(IHTMLDocument2) cpDocElement;
|
||||
cInfo.GetDocument(&cpDocElement);
|
||||
if (cpDocElement == NULL)
|
||||
{
|
||||
cInfo.OutputString(_T("Error: No document"));
|
||||
return trFailed;
|
||||
}
|
||||
|
||||
CIPtr(IHTMLElementCollection) cpColl;
|
||||
HRESULT hr = cpDocElement->get_all( &cpColl );
|
||||
if (hr == S_OK)
|
||||
{
|
||||
tstDrillerLevel(cInfo, cpColl, 0);
|
||||
}
|
||||
|
||||
return trPassed;
|
||||
}
|
||||
|
||||
|
||||
TestResult __cdecl tstTesters(BrowserInfo &cInfo)
|
||||
{
|
||||
cInfo.OutputString("Test architecture is reasonably sane!");
|
||||
return trPassed;
|
||||
}
|
||||
|
||||
|
||||
TestResult __cdecl tstControlActive(BrowserInfo &cInfo)
|
||||
{
|
||||
CBrowserCtlSiteInstance *pControlSite = cInfo.pControlSite;
|
||||
if (pControlSite == NULL)
|
||||
{
|
||||
cInfo.OutputString(_T("Error: No control site"));
|
||||
return trFailed;
|
||||
}
|
||||
|
||||
if (!pControlSite->IsInPlaceActive())
|
||||
{
|
||||
cInfo.OutputString(_T("Error: Control is not in-place active"));
|
||||
return trFailed;
|
||||
}
|
||||
|
||||
return trPassed;
|
||||
}
|
||||
|
||||
|
||||
TestResult __cdecl tstIWebBrowser(BrowserInfo &cInfo)
|
||||
{
|
||||
if (cInfo.pIUnknown == NULL)
|
||||
{
|
||||
cInfo.OutputString(_T("Error: No control"));
|
||||
return trFailed;
|
||||
}
|
||||
|
||||
CIPtr(IWebBrowser) cpIWebBrowser = cInfo.pIUnknown;
|
||||
if (cpIWebBrowser)
|
||||
{
|
||||
return trPassed;
|
||||
}
|
||||
|
||||
cInfo.OutputString(_T("Error: No IWebBrowser"));
|
||||
return trFailed;
|
||||
}
|
||||
|
||||
|
||||
TestResult __cdecl tstIWebBrowser2(BrowserInfo &cInfo)
|
||||
{
|
||||
if (cInfo.pIUnknown == NULL)
|
||||
{
|
||||
cInfo.OutputString(_T("Error: No control"));
|
||||
return trFailed;
|
||||
}
|
||||
CIPtr(IWebBrowser2) cpIWebBrowser = cInfo.pIUnknown;
|
||||
if (cpIWebBrowser)
|
||||
{
|
||||
return trPassed;
|
||||
}
|
||||
|
||||
cInfo.OutputString(_T("Error: No IWebBrowser2"));
|
||||
return trFailed;
|
||||
}
|
||||
|
||||
|
||||
TestResult __cdecl tstIWebBrowserApp(BrowserInfo &cInfo)
|
||||
{
|
||||
if (cInfo.pIUnknown == NULL)
|
||||
{
|
||||
cInfo.OutputString(_T("Error: No control"));
|
||||
return trFailed;
|
||||
}
|
||||
|
||||
CIPtr(IWebBrowserApp) cpIWebBrowser = cInfo.pIUnknown;
|
||||
if (cpIWebBrowser)
|
||||
{
|
||||
return trPassed;
|
||||
}
|
||||
|
||||
cInfo.OutputString(_T("Error: No IWebBrowserApp"));
|
||||
return trFailed;
|
||||
}
|
||||
|
||||
|
||||
TestResult __cdecl tstNavigate2(BrowserInfo &cInfo)
|
||||
{
|
||||
return trFailed;
|
||||
}
|
||||
|
||||
|
||||
TestResult __cdecl tstScriptTest(BrowserInfo &cInfo)
|
||||
{
|
||||
cInfo.nResult = trFailed;
|
||||
|
||||
CTestScriptHelperInstance *pHelper = NULL;
|
||||
CTestScriptHelperInstance::CreateInstance(&pHelper);
|
||||
if (pHelper)
|
||||
{
|
||||
pHelper->m_pBrowserInfo = &cInfo;
|
||||
|
||||
CActiveScriptSiteInstance *pSite = NULL;
|
||||
CActiveScriptSiteInstance::CreateInstance(&pSite);
|
||||
if (pSite)
|
||||
{
|
||||
// TODO read from registry
|
||||
CString szScript;
|
||||
szScript.Format(_T("Scripts\\%s"), cInfo.pTest->szName);
|
||||
|
||||
pSite->AddRef();
|
||||
pSite->AttachVBScript();
|
||||
pSite->AddNamedObject(_T("BrowserInfo"), pHelper, TRUE);
|
||||
pSite->ParseScriptFile(szScript);
|
||||
pSite->PlayScript();
|
||||
pSite->Detach();
|
||||
pSite->Release();
|
||||
}
|
||||
}
|
||||
|
||||
return cInfo.nResult;
|
||||
}
|
||||
|
||||
|
||||
Test aScripts[] =
|
||||
{
|
||||
{ _T("Script test"), _T("Test that the scripting engine is sane"), tstScriptTest }
|
||||
};
|
||||
|
||||
|
||||
void __cdecl ScriptSetPopulator(TestSet *pTestSet)
|
||||
{
|
||||
// TODO read from registry
|
||||
CString szTestDir(_T("Scripts"));
|
||||
|
||||
CStringList cStringList;
|
||||
CFileFind cFinder;
|
||||
CString szPattern;
|
||||
|
||||
|
||||
szPattern.Format(_T("%s\\*.vbs"), szTestDir);
|
||||
BOOL bWorking = cFinder.FindFile(szPattern);
|
||||
while (bWorking)
|
||||
{
|
||||
bWorking = cFinder.FindNextFile();
|
||||
cStringList.AddTail(cFinder.GetFileName());
|
||||
}
|
||||
|
||||
szPattern.Format(_T("%s\\*.js"), szTestDir);
|
||||
bWorking = cFinder.FindFile(szPattern);
|
||||
while (bWorking)
|
||||
{
|
||||
bWorking = cFinder.FindNextFile();
|
||||
cStringList.AddTail(cFinder.GetFileName());
|
||||
}
|
||||
|
||||
// Create a set of tests from the scripts found
|
||||
Test *pTests = (Test *) malloc(sizeof(Test) * cStringList.GetCount());
|
||||
for (int i = 0; i < cStringList.GetCount(); i++)
|
||||
{
|
||||
CString szScript = cStringList.GetAt(cStringList.FindIndex(i));
|
||||
_tcscpy(pTests[i].szName, szScript);
|
||||
_tcscpy(pTests[i].szDesc, _T("Run the specified script"));
|
||||
pTests[i].pfn = tstScriptTest;
|
||||
}
|
||||
|
||||
pTestSet->nTests = cStringList.GetCount();
|
||||
pTestSet->aTests = pTests;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
Test aBasic[] =
|
||||
{
|
||||
{ _T("Test Tester"), _T("Ensure that the testing architecture is working"), tstTesters, trNotRun },
|
||||
{ _T("Control basics"), _T("Ensure that the browser control is active"), tstControlActive, trNotRun },
|
||||
{ _T("IWebBrowser"), _T("Test if control has an IWebBrowser interface"), tstIWebBrowser, trNotRun },
|
||||
{ _T("IWebBrowser2"), _T("Test if control has an IWebBrowser2 interface"), tstIWebBrowser2, trNotRun },
|
||||
{ _T("IWebBrowserApp"), _T("Test if control has an IWebBrowserApp interface"), tstIWebBrowserApp, trNotRun }
|
||||
};
|
||||
|
||||
|
||||
Test aBrowsing[] =
|
||||
{
|
||||
{ _T("IWebBrowser2::Navigate2"), _T("Test if browser can navigate to the test URL"), NULL }
|
||||
};
|
||||
|
||||
|
||||
Test aDHTML[] =
|
||||
{
|
||||
{ _T("IWebBrowser::get_Document"), _T("Test if browser has a top level element"), tstDocument },
|
||||
{ _T("IHTMLElementCollection::get__newEnum"), _T("Test if element collections return enumerations"), tstCollectionEnum },
|
||||
{ _T("Parse DOM"), _T("Parse the document DOM"), tstDriller }
|
||||
};
|
||||
|
||||
|
||||
Test aOther[] =
|
||||
{
|
||||
{ _T("Print Page"), _T("Print the test URL page"), NULL }
|
||||
};
|
||||
|
||||
|
||||
TestSet aTestSets[] =
|
||||
{
|
||||
{ _T("Basic"), _T("Basic sanity tests"), 5, aBasic, NULL },
|
||||
{ _T("Browsing"), _T("Browsing and navigation tests"), 1, aBrowsing , NULL},
|
||||
{ _T("DHTML"), _T("Test the DOM"), 3, aDHTML, NULL },
|
||||
{ _T("Other"), _T("Other tests"), 1, aOther, NULL },
|
||||
{ _T("Scripts"), _T("Script tests"), 0, NULL, ScriptSetPopulator }
|
||||
};
|
||||
|
||||
|
||||
int nTestSets = sizeof(aTestSets) / sizeof(aTestSets[0]);
|
||||
73
mozilla/embedding/browser/activex/tests/cbrowse/Tests.h
Normal file
@@ -0,0 +1,73 @@
|
||||
/* -*- 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):
|
||||
*/
|
||||
#ifndef TESTS_H
|
||||
#define TESTS_H
|
||||
|
||||
#include "CBrowse_i.h"
|
||||
|
||||
class CBrowseDlg;
|
||||
struct Test;
|
||||
|
||||
class BrowserInfo
|
||||
{
|
||||
public:
|
||||
Test *pTest;
|
||||
TestResult nResult;
|
||||
CBrowserCtlSiteInstance *pControlSite;
|
||||
IUnknown *pIUnknown;
|
||||
CLSID clsid;
|
||||
CBrowseDlg *pBrowseDlg;
|
||||
CString szTestURL;
|
||||
CString szTestCGI;
|
||||
|
||||
void OutputString(const TCHAR *szMessage, ...);
|
||||
HRESULT GetWebBrowser(IWebBrowserApp **pWebBrowser);
|
||||
HRESULT GetDocument(IHTMLDocument2 **pDocument);
|
||||
};
|
||||
|
||||
|
||||
typedef TestResult (__cdecl *TestProc)(BrowserInfo &cInfo);
|
||||
|
||||
struct Test
|
||||
{
|
||||
TCHAR szName[256];
|
||||
TCHAR szDesc[256];
|
||||
TestProc pfn;
|
||||
TestResult nLastResult;
|
||||
};
|
||||
|
||||
struct TestSet;
|
||||
typedef void (__cdecl *SetPopulatorProc)(TestSet *pTestSet);
|
||||
|
||||
struct TestSet
|
||||
{
|
||||
TCHAR *szName;
|
||||
TCHAR *szDesc;
|
||||
int nTests;
|
||||
Test *aTests;
|
||||
SetPopulatorProc pfnPopulator;
|
||||
};
|
||||
|
||||
extern TestSet aTestSets[];
|
||||
extern int nTestSets;
|
||||
|
||||
#endif
|
||||
205
mozilla/embedding/browser/activex/tests/cbrowse/cbrowse.cpp
Normal file
@@ -0,0 +1,205 @@
|
||||
// cbrowse.cpp : Defines the class behaviors for the application.
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "cbrowse.h"
|
||||
#include "PickerDlg.h"
|
||||
#include <initguid.h>
|
||||
#include "Cbrowse_i.c"
|
||||
#include "TestScriptHelper.h"
|
||||
#include "ControlEventSink.h"
|
||||
#include "CBrowserCtlSite.h"
|
||||
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define new DEBUG_NEW
|
||||
#undef THIS_FILE
|
||||
static char THIS_FILE[] = __FILE__;
|
||||
#endif
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CBrowseApp
|
||||
|
||||
BEGIN_MESSAGE_MAP(CBrowseApp, CWinApp)
|
||||
//{{AFX_MSG_MAP(CBrowseApp)
|
||||
// NOTE - the ClassWizard will add and remove mapping macros here.
|
||||
// DO NOT EDIT what you see in these blocks of generated code!
|
||||
//}}AFX_MSG
|
||||
ON_COMMAND(ID_HELP, CWinApp::OnHelp)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CBrowseApp construction
|
||||
|
||||
CBrowseApp::CBrowseApp()
|
||||
{
|
||||
// TODO: add construction code here,
|
||||
// Place all significant initialization in InitInstance
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// The one and only CBrowseApp object
|
||||
|
||||
CBrowseApp theApp;
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CBrowseApp initialization
|
||||
|
||||
BOOL CBrowseApp::InitInstance()
|
||||
{
|
||||
// Initialize OLE libraries
|
||||
if (!AfxOleInit())
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
if (!InitATL())
|
||||
return FALSE;
|
||||
|
||||
AfxEnableControlContainer();
|
||||
_Module.RegisterClassObjects(CLSCTX_LOCAL_SERVER,
|
||||
REGCLS_MULTIPLEUSE);
|
||||
|
||||
|
||||
// Standard initialization
|
||||
// If you are not using these features and wish to reduce the size
|
||||
// of your final executable, you should remove from the following
|
||||
// the specific initialization routines you do not need.
|
||||
|
||||
#ifdef _AFXDLL
|
||||
Enable3dControls(); // Call this when using MFC in a shared DLL
|
||||
#else
|
||||
Enable3dControlsStatic(); // Call this when linking to MFC statically
|
||||
#endif
|
||||
|
||||
int nResponse;
|
||||
|
||||
CPickerDlg pickerDlg;
|
||||
nResponse = pickerDlg.DoModal();
|
||||
if (nResponse != IDOK)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
m_pDlg = new CBrowseDlg;
|
||||
m_pDlg->m_clsid = pickerDlg.m_clsid;
|
||||
m_pDlg->m_bUseCustomDropTarget = pickerDlg.m_bUseCustom;
|
||||
m_pDlg->m_bUseCustomPopupMenu = pickerDlg.m_bUseCustom;
|
||||
m_pDlg->Create(IDD_CBROWSE_DIALOG);
|
||||
m_pMainWnd = m_pDlg;
|
||||
|
||||
// Since the dialog has been closed, return FALSE so that we exit the
|
||||
// application, rather than start the application's message pump.
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
CBrowseModule _Module;
|
||||
|
||||
BEGIN_OBJECT_MAP(ObjectMap)
|
||||
OBJECT_ENTRY(CLSID_TestScriptHelper, CTestScriptHelper)
|
||||
// OBJECT_ENTRY(CLSID_ControlEventSink, CControlEventSink)
|
||||
// OBJECT_ENTRY(CLSID_CBrowserCtlSite, CCBrowserCtlSite)
|
||||
END_OBJECT_MAP()
|
||||
|
||||
LONG CBrowseModule::Unlock()
|
||||
{
|
||||
AfxOleUnlockApp();
|
||||
return 0;
|
||||
}
|
||||
|
||||
LONG CBrowseModule::Lock()
|
||||
{
|
||||
AfxOleLockApp();
|
||||
return 1;
|
||||
}
|
||||
|
||||
LPCTSTR CBrowseModule::FindOneOf(LPCTSTR p1, LPCTSTR p2)
|
||||
{
|
||||
while (*p1 != NULL)
|
||||
{
|
||||
LPCTSTR p = p2;
|
||||
while (*p != NULL)
|
||||
{
|
||||
if (*p1 == *p)
|
||||
return CharNext(p1);
|
||||
p = CharNext(p);
|
||||
}
|
||||
p1++;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
int CBrowseApp::ExitInstance()
|
||||
{
|
||||
if (m_bATLInited)
|
||||
{
|
||||
_Module.RevokeClassObjects();
|
||||
_Module.Term();
|
||||
CoUninitialize();
|
||||
}
|
||||
return CWinApp::ExitInstance();
|
||||
}
|
||||
|
||||
|
||||
BOOL CBrowseApp::InitATL()
|
||||
{
|
||||
m_bATLInited = TRUE;
|
||||
|
||||
#if _WIN32_WINNT >= 0x0400
|
||||
HRESULT hRes = CoInitializeEx(NULL, COINIT_MULTITHREADED);
|
||||
#else
|
||||
HRESULT hRes = CoInitialize(NULL);
|
||||
#endif
|
||||
|
||||
if (FAILED(hRes))
|
||||
{
|
||||
m_bATLInited = FALSE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
_Module.Init(ObjectMap, AfxGetInstanceHandle());
|
||||
_Module.dwThreadID = GetCurrentThreadId();
|
||||
|
||||
LPTSTR lpCmdLine = GetCommandLine(); //this line necessary for _ATL_MIN_CRT
|
||||
TCHAR szTokens[] = _T("-/");
|
||||
|
||||
BOOL bRun = TRUE;
|
||||
LPCTSTR lpszToken = _Module.FindOneOf(lpCmdLine, szTokens);
|
||||
while (lpszToken != NULL)
|
||||
{
|
||||
if (lstrcmpi(lpszToken, _T("UnregServer"))==0)
|
||||
{
|
||||
_Module.UpdateRegistryFromResource(IDR_CBROWSE, FALSE);
|
||||
_Module.UnregisterServer(TRUE); //TRUE means typelib is unreg'd
|
||||
bRun = FALSE;
|
||||
break;
|
||||
}
|
||||
if (lstrcmpi(lpszToken, _T("RegServer"))==0)
|
||||
{
|
||||
_Module.UpdateRegistryFromResource(IDR_CBROWSE, TRUE);
|
||||
_Module.RegisterServer(TRUE);
|
||||
bRun = FALSE;
|
||||
break;
|
||||
}
|
||||
lpszToken = _Module.FindOneOf(lpszToken, szTokens);
|
||||
}
|
||||
|
||||
if (!bRun)
|
||||
{
|
||||
m_bATLInited = FALSE;
|
||||
_Module.Term();
|
||||
CoUninitialize();
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
hRes = _Module.RegisterClassObjects(CLSCTX_LOCAL_SERVER,
|
||||
REGCLS_MULTIPLEUSE);
|
||||
if (FAILED(hRes))
|
||||
{
|
||||
m_bATLInited = FALSE;
|
||||
CoUninitialize();
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
327
mozilla/embedding/browser/activex/tests/cbrowse/cbrowse.dsp
Normal file
@@ -0,0 +1,327 @@
|
||||
# Microsoft Developer Studio Project File - Name="cbrowse" - Package Owner=<4>
|
||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||
# ** DO NOT EDIT **
|
||||
|
||||
# TARGTYPE "Win32 (x86) Application" 0x0101
|
||||
|
||||
CFG=cbrowse - Win32 Debug
|
||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||
!MESSAGE use the Export Makefile command and run
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "cbrowse.mak".
|
||||
!MESSAGE
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "cbrowse.mak" CFG="cbrowse - Win32 Debug"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "cbrowse - Win32 Release" (based on "Win32 (x86) Application")
|
||||
!MESSAGE "cbrowse - Win32 Debug" (based on "Win32 (x86) Application")
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
# PROP AllowPerConfigDependencies 0
|
||||
# PROP Scc_ProjName ""
|
||||
# PROP Scc_LocalPath ""
|
||||
CPP=cl.exe
|
||||
MTL=midl.exe
|
||||
RSC=rc.exe
|
||||
|
||||
!IF "$(CFG)" == "cbrowse - Win32 Release"
|
||||
|
||||
# PROP BASE Use_MFC 6
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "Release"
|
||||
# PROP BASE Intermediate_Dir "Release"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 6
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "Release"
|
||||
# PROP Intermediate_Dir "Release"
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /Yu"stdafx.h" /FD /c
|
||||
# ADD CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /Yu"stdafx.h" /FD /c
|
||||
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
|
||||
# ADD MTL /nologo /D "NDEBUG" /o "NUL" /win32
|
||||
# ADD BASE RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL"
|
||||
# ADD RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 /nologo /subsystem:windows /machine:I386
|
||||
# ADD LINK32 /nologo /subsystem:windows /machine:I386
|
||||
|
||||
!ELSEIF "$(CFG)" == "cbrowse - Win32 Debug"
|
||||
|
||||
# PROP BASE Use_MFC 6
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "Debug"
|
||||
# PROP BASE Intermediate_Dir "Debug"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 6
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "Debug"
|
||||
# PROP Intermediate_Dir "Debug"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /Yu"stdafx.h" /FD /c
|
||||
# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /FR /Yu"stdafx.h" /FD /c
|
||||
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
|
||||
# ADD MTL /nologo /D "_DEBUG" /o "NUL" /win32
|
||||
# ADD BASE RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL"
|
||||
# ADD RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
||||
# Name "cbrowse - Win32 Release"
|
||||
# Name "cbrowse - Win32 Debug"
|
||||
# Begin Group "Source Files"
|
||||
|
||||
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\ActiveScriptSite.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\cbrowse.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Cbrowse.idl
|
||||
# ADD MTL /h "Cbrowse_i.h" /iid "Cbrowse_i.c" /Oicf
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\cbrowse.rc
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\CBrowseDlg.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\CBrowserCtlSite.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\ControlEventSink.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\ControlSite.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\ControlSiteIPFrame.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\EditToolBar.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\MozActiveX.java
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\PickerDlg.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\PropertyBag.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\StdAfx.cpp
|
||||
# ADD CPP /Yc"stdafx.h"
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\TabDOM.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\TabMessages.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\TabTests.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Tests.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\TestScriptHelper.cpp
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Header Files"
|
||||
|
||||
# PROP Default_Filter "h;hpp;hxx;hm;inl"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\ActiveScriptSite.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\cbrowse.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Cbrowse_i.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\CBrowseDlg.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\CBrowserCtlSite.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\ControlEventSink.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\ControlSite.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\ControlSiteIPFrame.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\EditToolBar.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\PickerDlg.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Resource.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\StdAfx.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\TabDOM.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\TabMessages.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\TabTests.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Tests.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\TestScriptHelper.h
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Resource Files"
|
||||
|
||||
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\cbrowse.ico
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\cbrowse.rc2
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\closedfolder.ico
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\openfold.ico
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\openfolder.ico
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\test.ico
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\testfailed.ico
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\testpartial.ico
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\testpassed.ico
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\res\toolbar1.bmp
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Scripts"
|
||||
|
||||
# PROP Default_Filter "js;vbs"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Scripts\Basic.vbs
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Scripts\NewWindow.vbs
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Scripts\Post.vbs
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Cbrowse.rgs
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\CBrowserCtlSite.rgs
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\ControlEventSink.rgs
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\ReadMe.txt
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\TestScriptHelper.rgs
|
||||
# End Source File
|
||||
# End Target
|
||||
# End Project
|
||||
# Section cbrowse : {10404710-0021-001E-1B00-1B00EAA80000}
|
||||
# 1:11:IDR_CBROWSE:103
|
||||
# End Section
|
||||
59
mozilla/embedding/browser/activex/tests/cbrowse/cbrowse.h
Normal file
@@ -0,0 +1,59 @@
|
||||
// cbrowse.h : main header file for the CBROWSE application
|
||||
//
|
||||
|
||||
#if !defined(AFX_CBROWSE_H__5121F5E4_5324_11D2_93E1_000000000000__INCLUDED_)
|
||||
#define AFX_CBROWSE_H__5121F5E4_5324_11D2_93E1_000000000000__INCLUDED_
|
||||
|
||||
#if _MSC_VER >= 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER >= 1000
|
||||
|
||||
#ifndef __AFXWIN_H__
|
||||
#error include 'stdafx.h' before including this file for PCH
|
||||
#endif
|
||||
|
||||
#include "resource.h" // main symbols
|
||||
#include "Cbrowse_i.h"
|
||||
#include "CBrowseDlg.h"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CBrowseApp:
|
||||
// See cbrowse.cpp for the implementation of this class
|
||||
//
|
||||
|
||||
class CBrowseApp : public CWinApp
|
||||
{
|
||||
public:
|
||||
CBrowseApp();
|
||||
|
||||
// Overrides
|
||||
// ClassWizard generated virtual function overrides
|
||||
//{{AFX_VIRTUAL(CBrowseApp)
|
||||
public:
|
||||
virtual BOOL InitInstance();
|
||||
virtual int ExitInstance();
|
||||
//}}AFX_VIRTUAL
|
||||
|
||||
// Implementation
|
||||
|
||||
//{{AFX_MSG(CBrowseApp)
|
||||
// NOTE - the ClassWizard will add and remove member functions here.
|
||||
// DO NOT EDIT what you see in these blocks of generated code !
|
||||
//}}AFX_MSG
|
||||
DECLARE_MESSAGE_MAP()
|
||||
private:
|
||||
|
||||
CBrowseDlg *m_pDlg;
|
||||
BOOL m_bATLInited;
|
||||
private:
|
||||
BOOL InitATL();
|
||||
|
||||
};
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
//{{AFX_INSERT_LOCATION}}
|
||||
// Microsoft Developer Studio will insert additional declarations immediately before the previous line.
|
||||
|
||||
#endif // !defined(AFX_CBROWSE_H__5121F5E4_5324_11D2_93E1_000000000000__INCLUDED_)
|
||||
450
mozilla/embedding/browser/activex/tests/cbrowse/cbrowse.rc
Normal file
@@ -0,0 +1,450 @@
|
||||
//Microsoft Developer Studio generated resource script.
|
||||
//
|
||||
#include "resource.h"
|
||||
|
||||
#define APSTUDIO_READONLY_SYMBOLS
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Generated from the TEXTINCLUDE 2 resource.
|
||||
//
|
||||
#include "afxres.h"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#undef APSTUDIO_READONLY_SYMBOLS
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Neutral resources
|
||||
|
||||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_NEU)
|
||||
#ifdef _WIN32
|
||||
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
|
||||
#pragma code_page(1252)
|
||||
#endif //_WIN32
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Icon
|
||||
//
|
||||
|
||||
// Icon with lowest ID value placed first to ensure application icon
|
||||
// remains consistent on all systems.
|
||||
IDI_CLOSEDFOLDER ICON DISCARDABLE "res\\closedfolder.ico"
|
||||
IDI_OPENFOLDER ICON DISCARDABLE "res\\openfolder.ico"
|
||||
IDI_TESTPASSED ICON DISCARDABLE "res\\testpassed.ico"
|
||||
IDI_TESTFAILED ICON DISCARDABLE "res\\testfailed.ico"
|
||||
IDI_TESTPARTIAL ICON DISCARDABLE "res\\testpartial.ico"
|
||||
#endif // Neutral resources
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// English (U.S.) resources
|
||||
|
||||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
|
||||
#ifdef _WIN32
|
||||
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||
#pragma code_page(1252)
|
||||
#endif //_WIN32
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Icon
|
||||
//
|
||||
|
||||
// Icon with lowest ID value placed first to ensure application icon
|
||||
// remains consistent on all systems.
|
||||
IDR_MAINFRAME ICON DISCARDABLE "res\\cbrowse.ico"
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// TEXTINCLUDE
|
||||
//
|
||||
|
||||
1 TEXTINCLUDE DISCARDABLE
|
||||
BEGIN
|
||||
"resource.h\0"
|
||||
END
|
||||
|
||||
2 TEXTINCLUDE DISCARDABLE
|
||||
BEGIN
|
||||
"#include ""afxres.h""\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
3 TEXTINCLUDE DISCARDABLE
|
||||
BEGIN
|
||||
"#define _AFX_NO_SPLITTER_RESOURCES\r\n"
|
||||
"#define _AFX_NO_OLE_RESOURCES\r\n"
|
||||
"#define _AFX_NO_TRACKER_RESOURCES\r\n"
|
||||
"#define _AFX_NO_PROPERTY_RESOURCES\r\n"
|
||||
"\r\n"
|
||||
"#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r\n"
|
||||
"#ifdef _WIN32\r\n"
|
||||
"LANGUAGE 9, 1\r\n"
|
||||
"#pragma code_page(1252)\r\n"
|
||||
"#endif\r\n"
|
||||
"#include ""res\\cbrowse.rc2"" // non-Microsoft Visual C++ edited resources\r\n"
|
||||
"#include ""afxres.rc"" // Standard components\r\n"
|
||||
"#endif\0"
|
||||
END
|
||||
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Dialog
|
||||
//
|
||||
|
||||
IDD_CBROWSE_DIALOG DIALOGEX 0, 0, 293, 320
|
||||
STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
|
||||
EXSTYLE WS_EX_APPWINDOW
|
||||
CAPTION "CBrowse"
|
||||
FONT 8, "MS Sans Serif", 0, 0, 0x1
|
||||
BEGIN
|
||||
CONTROL "",IDC_TAB_MARKER,"Static",SS_BLACKFRAME,7,223,279,89
|
||||
RTEXT "&URL:",IDC_STATIC,7,13,18,8
|
||||
DEFPUSHBUTTON "&Go",IDC_GO,135,11,25,13
|
||||
CONTROL "",IDC_BROWSER_MARKER,"Static",SS_BLACKFRAME,7,48,279,
|
||||
168
|
||||
COMBOBOX IDC_URL,27,11,106,52,CBS_DROPDOWN | CBS_AUTOHSCROLL |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
PUSHBUTTON "<",IDC_BACKWARD,163,11,14,13
|
||||
PUSHBUTTON ">",IDC_FORWARD,179,11,14,13
|
||||
CONTROL "&New window",IDC_NEWWINDOW,"Button",BS_AUTOCHECKBOX |
|
||||
WS_TABSTOP,200,7,53,10
|
||||
CONTROL "&Edit mode",IDC_EDITMODE,"Button",BS_AUTOCHECKBOX |
|
||||
WS_TABSTOP,200,17,47,10
|
||||
CONTROL "",IDC_EDITBAR_MARKER,"Static",SS_BLACKFRAME,7,28,279,19
|
||||
END
|
||||
|
||||
|
||||
#ifndef _MAC
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Version
|
||||
//
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 1,0,0,1
|
||||
PRODUCTVERSION 1,0,0,1
|
||||
FILEFLAGSMASK 0x3fL
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS 0x1L
|
||||
#else
|
||||
FILEFLAGS 0x0L
|
||||
#endif
|
||||
FILEOS 0x4L
|
||||
FILETYPE 0x1L
|
||||
FILESUBTYPE 0x0L
|
||||
BEGIN
|
||||
BLOCK "StringFileInfo"
|
||||
BEGIN
|
||||
BLOCK "040904B0"
|
||||
BEGIN
|
||||
VALUE "CompanyName", "\0"
|
||||
VALUE "FileDescription", "cbrowse MFC Application\0"
|
||||
VALUE "FileVersion", "1, 0, 0, 1\0"
|
||||
VALUE "InternalName", "cbrowse\0"
|
||||
VALUE "LegalCopyright", "Copyright (C) 1998\0"
|
||||
VALUE "LegalTrademarks", "\0"
|
||||
VALUE "OriginalFilename", "cbrowse.EXE\0"
|
||||
VALUE "ProductName", "cbrowse Application\0"
|
||||
VALUE "ProductVersion", "1, 0, 0, 1\0"
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
BEGIN
|
||||
VALUE "Translation", 0x409, 1200
|
||||
END
|
||||
END
|
||||
|
||||
#endif // !_MAC
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// DESIGNINFO
|
||||
//
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
GUIDELINES DESIGNINFO DISCARDABLE
|
||||
BEGIN
|
||||
IDD_CBROWSE_DIALOG, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 286
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 312
|
||||
HORZGUIDE, 216
|
||||
END
|
||||
END
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// REGISTRY
|
||||
//
|
||||
|
||||
IDR_CBROWSE REGISTRY DISCARDABLE "Cbrowse.rgs"
|
||||
IDR_TESTSCRIPTHELPER REGISTRY DISCARDABLE "TestScriptHelper.rgs"
|
||||
IDR_CONTROLEVENTSINK REGISTRY DISCARDABLE "ControlEventSink.rgs"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Menu
|
||||
//
|
||||
|
||||
IDR_MAIN MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP "&File"
|
||||
BEGIN
|
||||
MENUITEM "E&xit", ID_FILE_EXIT
|
||||
END
|
||||
POPUP "&Edit"
|
||||
BEGIN
|
||||
MENUITEM "Cu&t", ID_EDIT_CUT
|
||||
MENUITEM "&Copy", ID_EDIT_COPY
|
||||
MENUITEM "&Paste", ID_EDIT_PASTE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Select &All", ID_EDIT_SELECTALL
|
||||
END
|
||||
POPUP "&View"
|
||||
BEGIN
|
||||
POPUP "&Go To"
|
||||
BEGIN
|
||||
MENUITEM "&Back", ID_VIEW_GOTO_BACK
|
||||
MENUITEM "&Forward", ID_VIEW_GOTO_FORWARD
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Home Page", ID_VIEW_GOTO_HOME
|
||||
END
|
||||
MENUITEM "&Stop", ID_VIEW_STOP
|
||||
MENUITEM "&Refresh", ID_VIEW_REFRESH
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Sour&ce", ID_VIEW_VIEWSOURCE
|
||||
END
|
||||
POPUP "&Help"
|
||||
BEGIN
|
||||
MENUITEM "&About...", ID_HELP_ABOUT
|
||||
END
|
||||
END
|
||||
|
||||
#endif // English (U.S.) resources
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// English (U.K.) resources
|
||||
|
||||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENG)
|
||||
#ifdef _WIN32
|
||||
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_UK
|
||||
#pragma code_page(1252)
|
||||
#endif //_WIN32
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Icon
|
||||
//
|
||||
|
||||
// Icon with lowest ID value placed first to ensure application icon
|
||||
// remains consistent on all systems.
|
||||
IDI_TEST ICON DISCARDABLE "res\\test.ico"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Dialog
|
||||
//
|
||||
|
||||
IDD_PICKBROWSER DIALOG DISCARDABLE 0, 0, 284, 232
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Welcome to CBrowse!"
|
||||
FONT 8, "MS Sans Serif"
|
||||
BEGIN
|
||||
LTEXT "This is a browser/test application written in MFC that exercises the IE browser interface of the control that you choose from the list below.",
|
||||
IDC_STATIC,7,7,213,27
|
||||
LTEXT "Whatever control you choose, the exact same code is run upon it. Discrepancies in behaviour or test results may indicate a bug!",
|
||||
IDC_STATIC,7,33,213,20
|
||||
LTEXT "Pick the browser to test:",IDC_STATIC,7,56,77,8
|
||||
LISTBOX IDC_LISTBROWSER,7,65,213,50,LBS_NOINTEGRALHEIGHT |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
LTEXT "Some of the tests require a test URL. You may change the default one if you want. Ensure that the URL is valid otherwise the tests might fail!",
|
||||
IDC_STATIC,7,120,213,18
|
||||
EDITTEXT IDC_TESTURL,7,138,213,13,ES_AUTOHSCROLL
|
||||
LTEXT "Some tests also need a CGI URL, enter that here:",
|
||||
IDC_STATIC,7,157,157,8
|
||||
EDITTEXT IDC_TESTCGI,7,167,213,13,ES_AUTOHSCROLL
|
||||
CONTROL "Override default drop target and popup menus",
|
||||
IDC_OVERRIDE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,185,
|
||||
207,10
|
||||
CONTROL "Turn on Mozilla debugging (creates a mozilla.log file)",
|
||||
IDC_CHECK1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,197,
|
||||
172,10
|
||||
EDITTEXT IDC_EDIT1,7,210,213,14,ES_AUTOHSCROLL
|
||||
DEFPUSHBUTTON "OK",IDOK,227,7,50,14
|
||||
PUSHBUTTON "Cancel",IDCANCEL,227,24,50,14
|
||||
END
|
||||
|
||||
IDD_TAB_MESSAGES DIALOG DISCARDABLE 0, 0, 275, 75
|
||||
STYLE WS_CHILD | WS_VISIBLE
|
||||
FONT 8, "MS Sans Serif"
|
||||
BEGIN
|
||||
LISTBOX IDC_OUTPUT,5,5,265,50,LBS_NOINTEGRALHEIGHT | WS_VSCROLL |
|
||||
WS_TABSTOP
|
||||
LTEXT "Static",IDC_STATUS,5,59,197,11,SS_SUNKEN
|
||||
CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER,
|
||||
205,59,65,11
|
||||
END
|
||||
|
||||
IDD_TAB_TESTS DIALOG DISCARDABLE 0, 0, 275, 75
|
||||
STYLE WS_CHILD | WS_VISIBLE
|
||||
FONT 8, "MS Sans Serif"
|
||||
BEGIN
|
||||
PUSHBUTTON "Run",IDC_RUNTEST,212,56,50,14,WS_DISABLED
|
||||
CONTROL "Tree1",IDC_TESTLIST,"SysTreeView32",TVS_HASBUTTONS |
|
||||
TVS_HASLINES | TVS_LINESATROOT | TVS_SHOWSELALWAYS |
|
||||
TVS_TRACKSELECT | WS_BORDER | WS_TABSTOP,5,5,196,65
|
||||
GROUPBOX "Test Description",IDC_STATIC,203,5,66,47
|
||||
LTEXT "",IDC_TESTDESCRIPTION,208,15,56,32
|
||||
END
|
||||
|
||||
IDD_TAB_DOM DIALOG DISCARDABLE 0, 0, 275, 80
|
||||
STYLE WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN
|
||||
FONT 8, "MS Sans Serif"
|
||||
BEGIN
|
||||
CONTROL "Tree1",IDC_DOMLIST,"SysTreeView32",TVS_HASBUTTONS |
|
||||
TVS_HASLINES | TVS_LINESATROOT | TVS_SHOWSELALWAYS |
|
||||
TVS_TRACKSELECT | WS_BORDER | WS_TABSTOP,5,5,212,70
|
||||
PUSHBUTTON "Refresh",IDC_REFRESHDOM,220,5,50,14
|
||||
END
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// DESIGNINFO
|
||||
//
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
GUIDELINES DESIGNINFO DISCARDABLE
|
||||
BEGIN
|
||||
IDD_PICKBROWSER, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 277
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 225
|
||||
END
|
||||
|
||||
IDD_TAB_MESSAGES, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 5
|
||||
RIGHTMARGIN, 270
|
||||
TOPMARGIN, 5
|
||||
BOTTOMMARGIN, 70
|
||||
END
|
||||
|
||||
IDD_TAB_TESTS, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 5
|
||||
RIGHTMARGIN, 270
|
||||
TOPMARGIN, 5
|
||||
BOTTOMMARGIN, 70
|
||||
END
|
||||
|
||||
IDD_TAB_DOM, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 5
|
||||
RIGHTMARGIN, 270
|
||||
TOPMARGIN, 5
|
||||
BOTTOMMARGIN, 75
|
||||
END
|
||||
END
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// REGISTRY
|
||||
//
|
||||
|
||||
IDR_CBROWSERCTLSITE REGISTRY DISCARDABLE "CBrowserCtlSite.rgs"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Toolbar
|
||||
//
|
||||
|
||||
IDR_DHTMLEDIT TOOLBAR DISCARDABLE 16, 15
|
||||
BEGIN
|
||||
BUTTON IDB_BOLD
|
||||
BUTTON IDB_ITALIC
|
||||
BUTTON IDB_UNDERLINE
|
||||
SEPARATOR
|
||||
BUTTON IDB_H1
|
||||
BUTTON IDB_H2
|
||||
BUTTON IDB_PARAGRAPH
|
||||
SEPARATOR
|
||||
BUTTON ID_ORDEREDLIST
|
||||
BUTTON IDB_UNORDEREDLIST
|
||||
END
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Bitmap
|
||||
//
|
||||
|
||||
IDR_DHTMLEDIT BITMAP DISCARDABLE "res\\toolbar1.bmp"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// String Table
|
||||
//
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
IDS_CHOOSEBROWSER "You must choose a browser control from the list to proceed."
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
IDD_TAB_MESSAGES "Messages"
|
||||
IDD_TAB_TESTS "Tests"
|
||||
IDD_TAB_DOM "DOM"
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
IDB_BOLD "Bold"
|
||||
IDB_ITALIC "Italic"
|
||||
IDB_UNDERLINE "Underline"
|
||||
END
|
||||
|
||||
#endif // English (U.K.) resources
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
|
||||
#ifndef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Generated from the TEXTINCLUDE 3 resource.
|
||||
//
|
||||
#define _AFX_NO_SPLITTER_RESOURCES
|
||||
#define _AFX_NO_OLE_RESOURCES
|
||||
#define _AFX_NO_TRACKER_RESOURCES
|
||||
#define _AFX_NO_PROPERTY_RESOURCES
|
||||
|
||||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
|
||||
#ifdef _WIN32
|
||||
LANGUAGE 9, 1
|
||||
#pragma code_page(1252)
|
||||
#endif
|
||||
#include "res\cbrowse.rc2" // non-Microsoft Visual C++ edited resources
|
||||
#include "afxres.rc" // Standard components
|
||||
#endif
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#endif // not APSTUDIO_INVOKED
|
||||
|
||||
BIN
mozilla/embedding/browser/activex/tests/cbrowse/res/cbrowse.ico
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
@@ -0,0 +1,13 @@
|
||||
//
|
||||
// CBROWSE.RC2 - resources Microsoft Visual C++ does not edit directly
|
||||
//
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
#error this file is not editable by Microsoft Visual C++
|
||||
#endif //APSTUDIO_INVOKED
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Add manually edited resources here...
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
After Width: | Height: | Size: 318 B |
|
After Width: | Height: | Size: 318 B |
BIN
mozilla/embedding/browser/activex/tests/cbrowse/res/test.ico
Normal file
|
After Width: | Height: | Size: 318 B |
|
After Width: | Height: | Size: 318 B |
|
After Width: | Height: | Size: 318 B |
|
After Width: | Height: | Size: 318 B |
BIN
mozilla/embedding/browser/activex/tests/cbrowse/res/toolbar1.bmp
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
75
mozilla/embedding/browser/activex/tests/cbrowse/resource.h
Normal file
@@ -0,0 +1,75 @@
|
||||
//{{NO_DEPENDENCIES}}
|
||||
// Microsoft Developer Studio generated include file.
|
||||
// Used by cbrowse.rc
|
||||
//
|
||||
#define IDS_CHOOSEBROWSER 1
|
||||
#define IDD_CBROWSE_DIALOG 102
|
||||
#define IDR_CBROWSE 103
|
||||
#define IDR_TESTSCRIPTHELPER 104
|
||||
#define IDR_CONTROLEVENTSINK 105
|
||||
#define IDR_CBROWSERCTLSITE 106
|
||||
#define IDR_MAINFRAME 128
|
||||
#define IDD_PICKBROWSER 129
|
||||
#define IDI_CLOSEDFOLDER 130
|
||||
#define IDI_OPENFOLDER 131
|
||||
#define IDI_TEST 132
|
||||
#define IDI_TESTPASSED 133
|
||||
#define IDI_TESTFAILED 134
|
||||
#define IDD_TAB_MESSAGES 135
|
||||
#define IDD_TAB_TESTS 136
|
||||
#define IDD_TAB_DOM 137
|
||||
#define IDR_DHTMLEDIT 138
|
||||
#define IDI_TESTPARTIAL 140
|
||||
#define IDR_MAIN 141
|
||||
#define IDC_URL 1000
|
||||
#define IDC_GO 1001
|
||||
#define IDC_BROWSER_MARKER 1002
|
||||
#define IDC_LISTBROWSER 1003
|
||||
#define IDC_RUNTEST 1004
|
||||
#define IDC_LISTMESSAGES 1005
|
||||
#define IDC_TESTLIST 1006
|
||||
#define IDC_BACKWARD 1008
|
||||
#define IDC_FORWARD 1009
|
||||
#define IDC_TESTDESCRIPTION 1010
|
||||
#define IDC_TESTURL 1011
|
||||
#define IDC_DOMLIST 1012
|
||||
#define IDC_TESTCGI 1012
|
||||
#define IDC_REFRESHDOM 1013
|
||||
#define IDC_NEWWINDOW 1014
|
||||
#define IDC_OUTPUT 1016
|
||||
#define IDC_TAB_MARKER 1017
|
||||
#define IDC_STATUS 1019
|
||||
#define IDC_PROGRESS 1020
|
||||
#define IDC_CHECK1 1021
|
||||
#define IDC_EDIT1 1022
|
||||
#define IDC_EDITMODE 1023
|
||||
#define IDC_EDITBAR_MARKER 1025
|
||||
#define IDC_OVERRIDE 1026
|
||||
#define IDB_BOLD 32771
|
||||
#define IDB_ITALIC 32772
|
||||
#define IDB_UNDERLINE 32773
|
||||
#define IDB_H1 32774
|
||||
#define IDB_H2 32775
|
||||
#define IDB_PARAGRAPH 32776
|
||||
#define ID_ORDEREDLIST 32777
|
||||
#define IDB_UNORDEREDLIST 32778
|
||||
#define ID_FILE_EXIT 32779
|
||||
#define ID_VIEW_VIEWSOURCE 32783
|
||||
#define ID_HELP_ABOUT 32784
|
||||
#define ID_VIEW_GOTO_BACK 32786
|
||||
#define ID_VIEW_GOTO_FORWARD 32787
|
||||
#define ID_VIEW_STOP 32788
|
||||
#define ID_VIEW_GOTO_HOME 32789
|
||||
#define ID_EDIT_SELECTALL 32790
|
||||
#define ID_VIEW_REFRESH 32791
|
||||
|
||||
// Next default values for new objects
|
||||
//
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||
#define _APS_NEXT_RESOURCE_VALUE 142
|
||||
#define _APS_NEXT_COMMAND_VALUE 32792
|
||||
#define _APS_NEXT_CONTROL_VALUE 1027
|
||||
#define _APS_NEXT_SYMED_VALUE 107
|
||||
#endif
|
||||
#endif
|
||||
37
mozilla/embedding/browser/activex/tests/vbrowse/VBrowse.vbp
Normal file
@@ -0,0 +1,37 @@
|
||||
Type=Exe
|
||||
Form=browser.frm
|
||||
Reference=*\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\WINNT40\System32\stdole2.tlb#OLE Automation
|
||||
Object={1339B53E-3453-11D2-93B9-000000000000}#1.0#0; MozillaControl.dll
|
||||
Object={F9043C88-F6F2-101A-A3C9-08002B2F49FB}#1.2#0; COMDLG32.OCX
|
||||
Object={FE0065C0-1B7B-11CF-9D53-00AA003C9CB6}#1.0#0; comct232.ocx
|
||||
Object={6B7E6392-850A-101B-AFC0-4210102A8DA7}#1.2#0; comctl32.ocx
|
||||
Form=frmToolBar.frm
|
||||
Object={EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}#1.1#0; SHDOCVW.DLL
|
||||
Form=frmExplorer.frm
|
||||
IconForm="frmMozilla"
|
||||
Startup="frmToolBar"
|
||||
HelpFile=""
|
||||
ExeName32="VBrowse.exe"
|
||||
Command32=""
|
||||
Name="Project1"
|
||||
HelpContextID="0"
|
||||
CompatibleMode="0"
|
||||
MajorVer=1
|
||||
MinorVer=0
|
||||
RevisionVer=0
|
||||
AutoIncrementVer=0
|
||||
ServerSupportFiles=0
|
||||
CompilationType=0
|
||||
OptimizationType=0
|
||||
FavorPentiumPro(tm)=0
|
||||
CodeViewDebugInfo=0
|
||||
NoAliasing=0
|
||||
BoundsCheck=0
|
||||
OverflowCheck=0
|
||||
FlPointCheck=0
|
||||
FDIVCheck=0
|
||||
UnroundedFP=0
|
||||
StartMode=0
|
||||
Unattended=0
|
||||
ThreadPerObject=0
|
||||
MaxNumberOfThreads=1
|
||||
54
mozilla/embedding/browser/activex/tests/vbrowse/browser.frm
Normal file
@@ -0,0 +1,54 @@
|
||||
VERSION 5.00
|
||||
Object = "{1339B53E-3453-11D2-93B9-000000000000}#1.0#0"; "MozillaControl.dll"
|
||||
Begin VB.Form frmMozilla
|
||||
Caption = "Mozilla Control"
|
||||
ClientHeight = 5880
|
||||
ClientLeft = 60
|
||||
ClientTop = 345
|
||||
ClientWidth = 7710
|
||||
LinkTopic = "Form1"
|
||||
ScaleHeight = 392
|
||||
ScaleMode = 3 'Pixel
|
||||
ScaleWidth = 514
|
||||
Begin MOZILLACONTROLLibCtl.MozillaBrowser Browser1
|
||||
Height = 5535
|
||||
Left = 0
|
||||
OleObjectBlob = "browser.frx":0000
|
||||
TabIndex = 0
|
||||
Top = 0
|
||||
Width = 7695
|
||||
End
|
||||
End
|
||||
Attribute VB_Name = "frmMozilla"
|
||||
Attribute VB_GlobalNameSpace = False
|
||||
Attribute VB_Creatable = False
|
||||
Attribute VB_PredeclaredId = True
|
||||
Attribute VB_Exposed = False
|
||||
Private Sub Browser1_BeforeNavigate(ByVal URL As String, ByVal Flags As Long, ByVal TargetFrameName As String, PostData As Variant, ByVal Headers As String, Cancel As Boolean)
|
||||
frmToolBar.Browser_BeforeNavigate URL, Flags, TargetFrameName, PostData, Headers, Cancel
|
||||
End Sub
|
||||
|
||||
Private Sub Browser1_NavigateComplete(ByVal URL As String)
|
||||
frmToolBar.Browser_NavigateComplete URL
|
||||
End Sub
|
||||
|
||||
Private Sub Browser1_BeforeNavigate2(ByVal pDisp As Object, URL As Variant, Flags As Variant, TargetFrameName As Variant, PostData As Variant, Headers As Variant, Cancel As Boolean)
|
||||
frmToolBar.Browser_BeforeNavigate2 pDisp, URL, Flags, TargetFrameName, PostData, Headers, Cancel
|
||||
End Sub
|
||||
|
||||
Private Sub Browser1_NavigateComplete2(ByVal pDisp As Object, URL As Variant)
|
||||
frmToolBar.Browser_NavigateComplete2 pDisp, URL
|
||||
End Sub
|
||||
|
||||
Private Sub Browser1_ProgressChange(ByVal Progress As Long, ByVal ProgressMax As Long)
|
||||
frmToolBar.Browser_ProgressChange Progress, ProgressMax
|
||||
End Sub
|
||||
|
||||
Private Sub Browser1_StatusTextChange(ByVal Text As String)
|
||||
frmToolBar.Browser_StatusTextChange Text
|
||||
End Sub
|
||||
|
||||
Private Sub Form_Resize()
|
||||
Browser1.Width = ScaleWidth
|
||||
Browser1.Height = ScaleHeight
|
||||
End Sub
|
||||
BIN
mozilla/embedding/browser/activex/tests/vbrowse/browser.frx
Normal file
@@ -0,0 +1,63 @@
|
||||
VERSION 5.00
|
||||
Object = "{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}#1.1#0"; "SHDOCVW.DLL"
|
||||
Begin VB.Form frmExplorer
|
||||
Caption = "Internet Explorer Control"
|
||||
ClientHeight = 5550
|
||||
ClientLeft = 60
|
||||
ClientTop = 345
|
||||
ClientWidth = 6675
|
||||
LinkTopic = "Form1"
|
||||
ScaleHeight = 5550
|
||||
ScaleWidth = 6675
|
||||
StartUpPosition = 3 'Windows Default
|
||||
Begin SHDocVwCtl.WebBrowser Browser1
|
||||
Height = 3015
|
||||
Left = 0
|
||||
TabIndex = 0
|
||||
Top = 0
|
||||
Width = 4575
|
||||
ExtentX = 8070
|
||||
ExtentY = 5318
|
||||
ViewMode = 1
|
||||
Offline = 0
|
||||
Silent = 0
|
||||
RegisterAsBrowser= 0
|
||||
RegisterAsDropTarget= 1
|
||||
AutoArrange = -1 'True
|
||||
NoClientEdge = 0 'False
|
||||
AlignLeft = 0 'False
|
||||
ViewID = "{0057D0E0-3573-11CF-AE69-08002B2E1262}"
|
||||
Location = ""
|
||||
End
|
||||
End
|
||||
Attribute VB_Name = "frmExplorer"
|
||||
Attribute VB_GlobalNameSpace = False
|
||||
Attribute VB_Creatable = False
|
||||
Attribute VB_PredeclaredId = True
|
||||
Attribute VB_Exposed = False
|
||||
Private Sub Browser1_NavigateComplete(ByVal URL As String)
|
||||
frmToolBar.Browser_NavigateComplete URL
|
||||
End Sub
|
||||
|
||||
Private Sub Browser1_ProgressChange(ByVal Progress As Long, ByVal ProgressMax As Long)
|
||||
frmToolBar.Browser_ProgressChange Progress, ProgressMax
|
||||
End Sub
|
||||
|
||||
Private Sub Browser1_StatusTextChange(ByVal Text As String)
|
||||
frmToolBar.Browser_StatusTextChange Text
|
||||
End Sub
|
||||
|
||||
Private Sub Form_Resize()
|
||||
Browser1.Width = ScaleWidth
|
||||
Browser1.Height = ScaleHeight
|
||||
End Sub
|
||||
|
||||
Private Sub Browser1_BeforeNavigate2(ByVal pDisp As Object, URL As Variant, Flags As Variant, TargetFrameName As Variant, PostData As Variant, Headers As Variant, Cancel As Boolean)
|
||||
frmToolBar.Browser_BeforeNavigate2 pDisp, URL, Flags, TargetFrameName, PostData, Headers, Cancel
|
||||
End Sub
|
||||
|
||||
Private Sub Browser1_NavigateComplete2(ByVal pDisp As Object, URL As Variant)
|
||||
frmToolBar.Browser_NavigateComplete2 pDisp, URL
|
||||
End Sub
|
||||
|
||||
|
||||
315
mozilla/embedding/browser/activex/tests/vbrowse/frmToolBar.frm
Normal file
@@ -0,0 +1,315 @@
|
||||
VERSION 5.00
|
||||
Object = "{6B7E6392-850A-101B-AFC0-4210102A8DA7}#1.2#0"; "comctl32.ocx"
|
||||
Begin VB.Form frmToolBar
|
||||
Caption = "Control Bar"
|
||||
ClientHeight = 1215
|
||||
ClientLeft = 165
|
||||
ClientTop = 735
|
||||
ClientWidth = 7965
|
||||
LinkTopic = "Form2"
|
||||
ScaleHeight = 81
|
||||
ScaleMode = 3 'Pixel
|
||||
ScaleWidth = 531
|
||||
StartUpPosition = 3 'Windows Default
|
||||
Begin ComctlLib.Toolbar Toolbar1
|
||||
Align = 1 'Align Top
|
||||
Height = 660
|
||||
Left = 0
|
||||
TabIndex = 0
|
||||
Top = 0
|
||||
Width = 7965
|
||||
_ExtentX = 14049
|
||||
_ExtentY = 1164
|
||||
ButtonWidth = 1032
|
||||
ButtonHeight = 1005
|
||||
AllowCustomize = 0 'False
|
||||
Appearance = 1
|
||||
ImageList = "ImageList1"
|
||||
_Version = 327682
|
||||
BeginProperty Buttons {0713E452-850A-101B-AFC0-4210102A8DA7}
|
||||
NumButtons = 10
|
||||
BeginProperty Button1 {0713F354-850A-101B-AFC0-4210102A8DA7}
|
||||
Key = "goback"
|
||||
Object.ToolTipText = "Go Back"
|
||||
Object.Tag = ""
|
||||
ImageIndex = 1
|
||||
EndProperty
|
||||
BeginProperty Button2 {0713F354-850A-101B-AFC0-4210102A8DA7}
|
||||
Key = "goforward"
|
||||
Object.ToolTipText = "Go Forward"
|
||||
Object.Tag = ""
|
||||
ImageIndex = 5
|
||||
EndProperty
|
||||
BeginProperty Button3 {0713F354-850A-101B-AFC0-4210102A8DA7}
|
||||
Key = "reload"
|
||||
Object.ToolTipText = "Reload Page"
|
||||
Object.Tag = ""
|
||||
ImageIndex = 6
|
||||
EndProperty
|
||||
BeginProperty Button4 {0713F354-850A-101B-AFC0-4210102A8DA7}
|
||||
Object.Tag = ""
|
||||
Style = 3
|
||||
MixedState = -1 'True
|
||||
EndProperty
|
||||
BeginProperty Button5 {0713F354-850A-101B-AFC0-4210102A8DA7}
|
||||
Key = "gohome"
|
||||
Object.ToolTipText = "Go Home"
|
||||
Object.Tag = ""
|
||||
ImageIndex = 3
|
||||
EndProperty
|
||||
BeginProperty Button6 {0713F354-850A-101B-AFC0-4210102A8DA7}
|
||||
Key = "gosearch"
|
||||
Object.ToolTipText = "Search Web"
|
||||
Object.Tag = ""
|
||||
ImageIndex = 8
|
||||
EndProperty
|
||||
BeginProperty Button7 {0713F354-850A-101B-AFC0-4210102A8DA7}
|
||||
Key = "ph"
|
||||
Object.Tag = ""
|
||||
Style = 4
|
||||
Object.Width = 200
|
||||
MixedState = -1 'True
|
||||
EndProperty
|
||||
BeginProperty Button8 {0713F354-850A-101B-AFC0-4210102A8DA7}
|
||||
Key = "loadpage"
|
||||
Object.ToolTipText = "Load this URL"
|
||||
Object.Tag = ""
|
||||
ImageIndex = 4
|
||||
EndProperty
|
||||
BeginProperty Button9 {0713F354-850A-101B-AFC0-4210102A8DA7}
|
||||
Object.Tag = ""
|
||||
Style = 3
|
||||
MixedState = -1 'True
|
||||
EndProperty
|
||||
BeginProperty Button10 {0713F354-850A-101B-AFC0-4210102A8DA7}
|
||||
Key = "stop"
|
||||
Object.ToolTipText = "Stop Loading"
|
||||
Object.Tag = ""
|
||||
ImageIndex = 2
|
||||
EndProperty
|
||||
EndProperty
|
||||
Begin VB.ComboBox cmbUrl
|
||||
BeginProperty Font
|
||||
Name = "MS Sans Serif"
|
||||
Size = 12
|
||||
Charset = 0
|
||||
Weight = 400
|
||||
Underline = 0 'False
|
||||
Italic = 0 'False
|
||||
Strikethrough = 0 'False
|
||||
EndProperty
|
||||
Height = 420
|
||||
ItemData = "frmToolBar.frx":0000
|
||||
Left = 3120
|
||||
List = "frmToolBar.frx":0016
|
||||
TabIndex = 1
|
||||
Text = "http://www.mozilla.com"
|
||||
Top = 120
|
||||
Width = 2895
|
||||
End
|
||||
End
|
||||
Begin VB.OptionButton rbExplorer
|
||||
Caption = "InternetExplorer"
|
||||
Height = 255
|
||||
Left = 2160
|
||||
TabIndex = 4
|
||||
Top = 720
|
||||
Width = 1575
|
||||
End
|
||||
Begin VB.OptionButton rbMozilla
|
||||
Caption = "Mozilla"
|
||||
Height = 255
|
||||
Left = 960
|
||||
TabIndex = 3
|
||||
Top = 720
|
||||
Value = -1 'True
|
||||
Width = 1215
|
||||
End
|
||||
Begin ComctlLib.StatusBar StatusBar1
|
||||
Align = 2 'Align Bottom
|
||||
Height = 255
|
||||
Left = 0
|
||||
TabIndex = 2
|
||||
Top = 960
|
||||
Width = 7965
|
||||
_ExtentX = 14049
|
||||
_ExtentY = 450
|
||||
SimpleText = ""
|
||||
_Version = 327682
|
||||
BeginProperty Panels {0713E89E-850A-101B-AFC0-4210102A8DA7}
|
||||
NumPanels = 2
|
||||
BeginProperty Panel1 {0713E89F-850A-101B-AFC0-4210102A8DA7}
|
||||
AutoSize = 1
|
||||
Object.Width = 11404
|
||||
MinWidth = 2646
|
||||
TextSave = ""
|
||||
Object.Tag = ""
|
||||
EndProperty
|
||||
BeginProperty Panel2 {0713E89F-850A-101B-AFC0-4210102A8DA7}
|
||||
Alignment = 2
|
||||
Object.Width = 2117
|
||||
MinWidth = 2117
|
||||
TextSave = ""
|
||||
Object.Tag = ""
|
||||
EndProperty
|
||||
EndProperty
|
||||
End
|
||||
Begin VB.Label Label1
|
||||
Caption = "Control:"
|
||||
Height = 255
|
||||
Left = 120
|
||||
TabIndex = 5
|
||||
Top = 720
|
||||
Width = 855
|
||||
End
|
||||
Begin ComctlLib.ImageList ImageList1
|
||||
Left = 6240
|
||||
Top = 480
|
||||
_ExtentX = 1005
|
||||
_ExtentY = 1005
|
||||
BackColor = -2147483643
|
||||
ImageWidth = 32
|
||||
ImageHeight = 32
|
||||
MaskColor = 12632256
|
||||
_Version = 327682
|
||||
BeginProperty Images {0713E8C2-850A-101B-AFC0-4210102A8DA7}
|
||||
NumListImages = 8
|
||||
BeginProperty ListImage1 {0713E8C3-850A-101B-AFC0-4210102A8DA7}
|
||||
Picture = "frmToolBar.frx":00A4
|
||||
Key = "back"
|
||||
EndProperty
|
||||
BeginProperty ListImage2 {0713E8C3-850A-101B-AFC0-4210102A8DA7}
|
||||
Picture = "frmToolBar.frx":03BE
|
||||
Key = "stop"
|
||||
EndProperty
|
||||
BeginProperty ListImage3 {0713E8C3-850A-101B-AFC0-4210102A8DA7}
|
||||
Picture = "frmToolBar.frx":06D8
|
||||
Key = "home"
|
||||
EndProperty
|
||||
BeginProperty ListImage4 {0713E8C3-850A-101B-AFC0-4210102A8DA7}
|
||||
Picture = "frmToolBar.frx":09F2
|
||||
Key = "gotopage"
|
||||
EndProperty
|
||||
BeginProperty ListImage5 {0713E8C3-850A-101B-AFC0-4210102A8DA7}
|
||||
Picture = "frmToolBar.frx":0D0C
|
||||
Key = "forward"
|
||||
EndProperty
|
||||
BeginProperty ListImage6 {0713E8C3-850A-101B-AFC0-4210102A8DA7}
|
||||
Picture = "frmToolBar.frx":1026
|
||||
Key = "reload"
|
||||
EndProperty
|
||||
BeginProperty ListImage7 {0713E8C3-850A-101B-AFC0-4210102A8DA7}
|
||||
Picture = "frmToolBar.frx":1340
|
||||
Key = "go"
|
||||
EndProperty
|
||||
BeginProperty ListImage8 {0713E8C3-850A-101B-AFC0-4210102A8DA7}
|
||||
Picture = "frmToolBar.frx":165A
|
||||
Key = "gofind"
|
||||
EndProperty
|
||||
EndProperty
|
||||
End
|
||||
Begin VB.Menu debug
|
||||
Caption = "Debug"
|
||||
Begin VB.Menu verbs
|
||||
Caption = "OLE Verbs"
|
||||
End
|
||||
End
|
||||
End
|
||||
Attribute VB_Name = "frmToolBar"
|
||||
Attribute VB_GlobalNameSpace = False
|
||||
Attribute VB_Creatable = False
|
||||
Attribute VB_PredeclaredId = True
|
||||
Attribute VB_Exposed = False
|
||||
Dim browser As Object
|
||||
|
||||
Private Sub Form_Load()
|
||||
frmMozilla.Show
|
||||
frmExplorer.Show
|
||||
Set browser = frmMozilla.Browser1
|
||||
End Sub
|
||||
|
||||
Sub Browser_BeforeNavigate(ByVal URL As String, ByVal Flags As Long, ByVal TargetFrameName As String, PostData As Variant, ByVal Headers As String, Cancel As Boolean)
|
||||
Debug.Print "Browser_BeforeNavigate " & URL
|
||||
StatusBar1.Panels(1).Text = "Loading " & URL
|
||||
End Sub
|
||||
|
||||
Sub Browser_NavigateComplete(ByVal URL As String)
|
||||
Debug.Print "Browser_NavigateComplete " & URL
|
||||
StatusBar1.Panels(1).Text = "Loaded " & URL
|
||||
StatusBar1.Panels(2).Text = ""
|
||||
End Sub
|
||||
|
||||
Sub Browser_BeforeNavigate2(ByVal pDisp As Object, URL As Variant, Flags As Variant, TargetFrameName As Variant, PostData As Variant, Headers As Variant, Cancel As Boolean)
|
||||
Debug.Print "Browser_BeforeNavigate2 " & URL
|
||||
StatusBar1.Panels(1).Text = "Loaded " & URL
|
||||
StatusBar1.Panels(2).Text = ""
|
||||
End Sub
|
||||
|
||||
Sub Browser_NavigateComplete2(ByVal pDisp As Object, URL As Variant)
|
||||
Debug.Print "Browser_NavigateComplete2 " & URL
|
||||
StatusBar1.Panels(1).Text = "Loaded " & URL
|
||||
StatusBar1.Panels(2).Text = ""
|
||||
End Sub
|
||||
|
||||
Sub Browser_StatusTextChange(ByVal Text As String)
|
||||
Debug.Print "Browser_StatusTextChange " & Text
|
||||
StatusBar1.Panels(1).Text = Text
|
||||
End Sub
|
||||
|
||||
Sub Browser_ProgressChange(ByVal Progress As Long, ByVal ProgressMax As Long)
|
||||
Dim fProgress As Double
|
||||
If Progress = 0 Then
|
||||
' fProgress = 0
|
||||
ElseIf ProgressMax > 0 Then
|
||||
' fProgress = (Progress * 100) / ProgressMax
|
||||
Else
|
||||
' fProgress = 0#
|
||||
Debug.Print "Progress error - Progress = " & Progress & ", ProgressMax = " & ProgressMax
|
||||
End If
|
||||
' StatusBar1.Panels(2).Text = Int(fProgress) & "%"
|
||||
End Sub
|
||||
|
||||
Private Sub rbExplorer_Click()
|
||||
Set browser = frmExplorer.Browser1
|
||||
End Sub
|
||||
|
||||
Private Sub rbMozilla_Click()
|
||||
Set browser = frmMozilla.Browser1
|
||||
End Sub
|
||||
|
||||
Private Sub Toolbar1_ButtonClick(ByVal Button As ComctlLib.Button)
|
||||
Select Case Button.Key
|
||||
Case "goback"
|
||||
browser.GoBack
|
||||
Case "goforward"
|
||||
browser.GoForward
|
||||
Case "reload"
|
||||
browser.Refresh
|
||||
Case "gohome"
|
||||
browser.GoHome
|
||||
Case "gosearch"
|
||||
browser.GoSearch
|
||||
Case "loadpage"
|
||||
browser.Navigate cmbUrl.Text
|
||||
Case "stop"
|
||||
browser.Stop
|
||||
Case Else
|
||||
End Select
|
||||
End Sub
|
||||
|
||||
Private Sub verbs_Click()
|
||||
' Query the browser to see what IOleCommandTarget commands it supports
|
||||
Dim nCmd As Integer
|
||||
Dim nStatus As Integer
|
||||
For nCmd = 1 To 40
|
||||
nStatus = browser.QueryStatusWB(nCmd)
|
||||
If nStatus And 1 Then
|
||||
Debug.Print "Command " & nCmd & " is supported"
|
||||
Else
|
||||
Debug.Print "Command " & nCmd & " is not supported"
|
||||
End If
|
||||
If nStatus And 2 Then
|
||||
Debug.Print "Command " & nCmd & " is disabled"
|
||||
End If
|
||||
Next
|
||||
End Sub
|
||||