You've already forked lazarus-ccr
* Added version2 branch of Geckoport, branched from version 1
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@2348 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
291
components/geckoport/version2/Components/BrowserSupports.pas
Normal file
291
components/geckoport/version2/Components/BrowserSupports.pas
Normal file
@ -0,0 +1,291 @@
|
||||
(* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla 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/MPL/
|
||||
*
|
||||
* 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 GeckoComponents for Delphi.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Takanori Ito.
|
||||
* Portions created by the Initial Developer are Copyright (C) 2003
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** *)
|
||||
unit BrowserSupports;
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
nsGeckoStrings, nsTypes, nsXPCOM;
|
||||
|
||||
const
|
||||
GFXIFORMATS_IID: TGUID = '{96d086e6-1dd1-11b2-b6b2-b77b59390247}';
|
||||
GFXIFORMATS_RGB = 0;
|
||||
GFXIFORMATS_BGR = 1;
|
||||
GFXIFORMATS_RGB_A1 = 2;
|
||||
GFXIFORMATS_BGR_A1 = 3;
|
||||
GFXIFORMATS_RGB_A8 = 4;
|
||||
GFXIFORMATS_BGR_A8 = 5;
|
||||
GFXIFORMATS_RGBA = 6;
|
||||
GFXIFORMATS_BGRA = 7;
|
||||
|
||||
GFXIIMAGEFRAME_IID: TGUID = '{51cc27a8-1dd2-11b2-a1aa-dad33ab193b4}';
|
||||
|
||||
IMGICONTAINER_IID: TGUID = '{5e8405a4-1dd2-11b2-8385-bc8e3446cad3}';
|
||||
IMGICONTAINER_kNormalAnimMode = 0;
|
||||
IMGICONTAINER_kDontAnimMode = 1;
|
||||
IMGICONTAINER_kLoopOnceAnimMode = 2;
|
||||
|
||||
IMGICONTAINEROBSERVER_IID: TGUID = '{153f1518-1dd2-11b2-b9cd-b16eb63e0471}';
|
||||
|
||||
NS_IBASEWINDOW_IID: TGUID = '{046bc8a0-8015-11d3-af70-00a024ffc08c}';
|
||||
|
||||
NS_ICONTEXTMENULISTENER2_IID: TGUID = '{7fb719b3-d804-4964-9596-77cf924ee314}';
|
||||
NS_ICONTEXTMENULISTENER2_CONTEXT_NONE = 0;
|
||||
NS_ICONTEXTMENULISTENER2_CONTEXT_LINK = 1;
|
||||
NS_ICONTEXTMENULISTENER2_CONTEXT_IMAGE = 2;
|
||||
NS_ICONTEXTMENULISTENER2_CONTEXT_DOCUMENT = 4;
|
||||
NS_ICONTEXTMENULISTENER2_CONTEXT_TEXT = 8;
|
||||
NS_ICONTEXTMENULISTENER2_CONTEXT_INPUT = 16;
|
||||
NS_ICONTEXTMENULISTENER2_CONTEXT_BACKGROUND_IMAGE = 32;
|
||||
|
||||
NS_ICONTEXTMENUINFO_IID: TGUID = '{2f977d56-5485-11d4-87e2-0010a4e75ef2}';
|
||||
|
||||
NS_IWEBNAVIGATION_IID: TGUID = '{f5d9e7b0-d930-11d3-b057-00a024ffc08c}';
|
||||
NS_IWEBNAVIGATION_LOAD_FLAGS_MASK = 65535;
|
||||
NS_IWEBNAVIGATION_LOAD_FLAGS_NONE = 0;
|
||||
NS_IWEBNAVIGATION_LOAD_FLAGS_IS_REFRESH = 16;
|
||||
NS_IWEBNAVIGATION_LOAD_FLAGS_IS_LINK = 32;
|
||||
NS_IWEBNAVIGATION_LOAD_FLAGS_BYPASS_HISTORY = 64;
|
||||
NS_IWEBNAVIGATION_LOAD_FLAGS_REPLACE_HISTORY = 128;
|
||||
NS_IWEBNAVIGATION_LOAD_FLAGS_BYPASS_CACHE = 256;
|
||||
NS_IWEBNAVIGATION_LOAD_FLAGS_BYPASS_PROXY = 512;
|
||||
NS_IWEBNAVIGATION_LOAD_FLAGS_CHARSET_CHANGE = 1024;
|
||||
NS_IWEBNAVIGATION_STOP_NETWORK = 1;
|
||||
NS_IWEBNAVIGATION_STOP_CONTENT = 2;
|
||||
NS_IWEBNAVIGATION_STOP_ALL = 3;
|
||||
|
||||
type
|
||||
gfxIFormats = interface;
|
||||
gfxIImageFrame = interface;
|
||||
imgIContainer = interface;
|
||||
imgIContainerObserver = interface;
|
||||
nsIBaseWindow = interface;
|
||||
nsIContextMenuListener2 = interface;
|
||||
nsIContextMenuInfo = interface;
|
||||
nsIWebNavigation = interface;
|
||||
(***
|
||||
* A color is a 32 bit unsigned integer with
|
||||
* four components: R, G, B and A.
|
||||
*
|
||||
* @var typedef PRUint32 gfx_color
|
||||
*)
|
||||
gfx_color = PRUint32;
|
||||
(***
|
||||
* typedef that should be used for bit depths
|
||||
* @var typedef unsigned short gfx_depth
|
||||
*)
|
||||
gfx_depth = PRUint16;
|
||||
(***
|
||||
* typedef that should be used for image formats
|
||||
* @var typedef long gfx_format
|
||||
* @see gfxIFormats
|
||||
*)
|
||||
gfx_format = PRInt32;
|
||||
nscoord = PRInt32;
|
||||
//In all currently supported platforms the native window handle is a pointer
|
||||
//size handle. In Linux64 THANDLE can not be used because by default it is 32
|
||||
//bits due file descriptors which are 32 bits even in 64 bit platform.
|
||||
//Win32 WindowHandle 32 bits THANDLE 32 bits
|
||||
//Win64 WindowHandle 64 bits THANDLE 64 bits
|
||||
//Linux32 WindowHandle 32 bits THANDLE 32 bits
|
||||
//Linux64 WindowHandle 64 bits THANDLE 32 bits
|
||||
nativeWindow = PtrUInt;
|
||||
gfxIFormats = interface
|
||||
['{96d086e6-1dd1-11b2-b6b2-b77b59390247}']
|
||||
end;
|
||||
|
||||
gfxIImageFrame = interface(nsISupports)
|
||||
['{51cc27a8-1dd2-11b2-a1aa-dad33ab193b4}']
|
||||
procedure Init(aX: nscoord; aY: nscoord; aWidth: nscoord; aHeight: nscoord; aFormat: gfx_format; aDepth: gfx_depth); safecall;
|
||||
function GetMutable(): PRBool; safecall;
|
||||
procedure SetMutable(aMutable: PRBool); safecall;
|
||||
property Mutable: PRBool read GetMutable write SetMutable;
|
||||
function GetX(): nscoord; safecall;
|
||||
property X: nscoord read GetX;
|
||||
function GetY(): nscoord; safecall;
|
||||
property Y: nscoord read GetY;
|
||||
function GetWidth(): nscoord; safecall;
|
||||
property Width: nscoord read GetWidth;
|
||||
function GetHeight(): nscoord; safecall;
|
||||
property Height: nscoord read GetHeight;
|
||||
procedure GetRect(rect: nsRect); safecall;
|
||||
function GetFormat(): gfx_format; safecall;
|
||||
property Format: gfx_format read GetFormat;
|
||||
function GetImageBytesPerRow(): PRUint32; safecall;
|
||||
property ImageBytesPerRow: PRUint32 read GetImageBytesPerRow;
|
||||
function GetImageDataLength(): PRUint32; safecall;
|
||||
property ImageDataLength: PRUint32 read GetImageDataLength;
|
||||
procedure GetImageData(out bits: PRUint8Array; out length: PRUint32); safecall;
|
||||
procedure SetImageData(data: PRUint8Array; length: PRUint32; offset: PRInt32); safecall;
|
||||
procedure LockImageData(); safecall;
|
||||
procedure UnlockImageData(); safecall;
|
||||
function GetAlphaBytesPerRow(): PRUint32; safecall;
|
||||
property AlphaBytesPerRow: PRUint32 read GetAlphaBytesPerRow;
|
||||
function GetAlphaDataLength(): PRUint32; safecall;
|
||||
property AlphaDataLength: PRUint32 read GetAlphaDataLength;
|
||||
procedure GetAlphaData(out bits: PRUint8Array; out length: PRUint32); safecall;
|
||||
procedure SetAlphaData(data: PRUint8Array; length: PRUint32; offset: PRInt32); safecall;
|
||||
procedure LockAlphaData(); safecall;
|
||||
procedure UnlockAlphaData(); safecall;
|
||||
procedure DrawTo(aDst: gfxIImageFrame; aDX: nscoord; aDY: nscoord; aDWidth: nscoord; aDHeight: nscoord); safecall;
|
||||
function GetTimeout(): PRInt32; safecall;
|
||||
procedure SetTimeout(aTimeout: PRInt32); safecall;
|
||||
property Timeout: PRInt32 read GetTimeout write SetTimeout;
|
||||
function GetFrameDisposalMethod(): PRInt32; safecall;
|
||||
procedure SetFrameDisposalMethod(aFrameDisposalMethod: PRInt32); safecall;
|
||||
property FrameDisposalMethod: PRInt32 read GetFrameDisposalMethod write SetFrameDisposalMethod;
|
||||
function GetBackgroundColor(): gfx_color; safecall;
|
||||
procedure SetBackgroundColor(aBackgroundColor: gfx_color); safecall;
|
||||
property BackgroundColor: gfx_color read GetBackgroundColor write SetBackgroundColor;
|
||||
end;
|
||||
|
||||
imgIContainer = interface(nsISupports)
|
||||
['{5e8405a4-1dd2-11b2-8385-bc8e3446cad3}']
|
||||
procedure Init(aWidth: nscoord; aHeight: nscoord; aObserver: imgIContainerObserver); safecall;
|
||||
function GetPreferredAlphaChannelFormat(): gfx_format; safecall;
|
||||
property PreferredAlphaChannelFormat: gfx_format read GetPreferredAlphaChannelFormat;
|
||||
function GetWidth(): nscoord; safecall;
|
||||
property Width: nscoord read GetWidth;
|
||||
function GetHeight(): nscoord; safecall;
|
||||
property Height: nscoord read GetHeight;
|
||||
function GetCurrentFrame(): gfxIImageFrame; safecall;
|
||||
property CurrentFrame: gfxIImageFrame read GetCurrentFrame;
|
||||
function GetNumFrames(): PRUint32; safecall;
|
||||
property NumFrames: PRUint32 read GetNumFrames;
|
||||
function GetAnimationMode(): PRUint16; safecall;
|
||||
procedure SetAnimationMode(aAnimationMode: PRUint16); safecall;
|
||||
property AnimationMode: PRUint16 read GetAnimationMode write SetAnimationMode;
|
||||
function GetFrameAt(index: PRUint32): gfxIImageFrame; safecall;
|
||||
procedure AppendFrame(item: gfxIImageFrame); safecall;
|
||||
procedure RemoveFrame(item: gfxIImageFrame); safecall;
|
||||
procedure EndFrameDecode(framenumber: PRUint32; timeout: PRUint32); safecall;
|
||||
procedure DecodingComplete(); safecall;
|
||||
procedure Clear(); safecall;
|
||||
procedure StartAnimation(); safecall;
|
||||
procedure StopAnimation(); safecall;
|
||||
procedure ResetAnimation(); safecall;
|
||||
function GetLoopCount(): PRInt32; safecall;
|
||||
procedure SetLoopCount(aLoopCount: PRInt32); safecall;
|
||||
property LoopCount: PRInt32 read GetLoopCount write SetLoopCount;
|
||||
end;
|
||||
|
||||
imgIContainerObserver = interface(nsISupports)
|
||||
['{153f1518-1dd2-11b2-b9cd-b16eb63e0471}']
|
||||
procedure FrameChanged(aContainer: imgIContainer; aFrame: gfxIImageFrame; const aDirtyRect: nsRect); safecall;
|
||||
end;
|
||||
|
||||
nsIBaseWindow = interface(nsISupports)
|
||||
['{046bc8a0-8015-11d3-af70-00a024ffc08c}']
|
||||
procedure InitWindow(parentNativeWindow: nativeWindow; parentWidget: nsIWidget; x: PRInt32; y: PRInt32; cx: PRInt32; cy: PRInt32); safecall;
|
||||
procedure Create(); safecall;
|
||||
procedure Destroy(); safecall;
|
||||
procedure SetPosition(x: PRInt32; y: PRInt32); safecall;
|
||||
procedure GetPosition(out x: PRInt32; out y: PRInt32); safecall;
|
||||
procedure SetSize(cx: PRInt32; cy: PRInt32; fRepaint: PRBool); safecall;
|
||||
procedure GetSize(out cx: PRInt32; out cy: PRInt32); safecall;
|
||||
procedure SetPositionAndSize(x: PRInt32; y: PRInt32; cx: PRInt32; cy: PRInt32; fRepaint: PRBool); safecall;
|
||||
procedure GetPositionAndSize(out x: PRInt32; out y: PRInt32; out cx: PRInt32; out cy: PRInt32); safecall;
|
||||
procedure Repaint(force: PRBool); safecall;
|
||||
function GetParentWidget(): nsIWidget; safecall;
|
||||
procedure SetParentWidget(aParentWidget: nsIWidget); safecall;
|
||||
property ParentWidget: nsIWidget read GetParentWidget write SetParentWidget;
|
||||
function GetParentNativeWindow(): nativeWindow; safecall;
|
||||
procedure SetParentNativeWindow(aParentNativeWindow: nativeWindow); safecall;
|
||||
property ParentNativeWindow: nativeWindow read GetParentNativeWindow write SetParentNativeWindow;
|
||||
function GetVisibility(): PRBool; safecall;
|
||||
procedure SetVisibility(aVisibility: PRBool); safecall;
|
||||
property Visibility: PRBool read GetVisibility write SetVisibility;
|
||||
function GetEnabled(): PRBool; safecall;
|
||||
procedure SetEnabled(aEnabled: PRBool); safecall;
|
||||
property Enabled: PRBool read GetEnabled write SetEnabled;
|
||||
function GetBlurSuppression(): PRBool; safecall;
|
||||
procedure SetBlurSuppression(aBlurSuppression: PRBool); safecall;
|
||||
property BlurSuppression: PRBool read GetBlurSuppression write SetBlurSuppression;
|
||||
function GetMainWidget(): nsIWidget; safecall;
|
||||
property MainWidget: nsIWidget read GetMainWidget;
|
||||
procedure SetFocus(); safecall;
|
||||
function GetTitle(): PWideChar; safecall;
|
||||
procedure SetTitle(const aTitle: PWideChar); safecall;
|
||||
property Title: PWideChar read GetTitle write SetTitle;
|
||||
end;
|
||||
|
||||
nsIContextMenuListener2 = interface(nsISupports)
|
||||
['{7fb719b3-d804-4964-9596-77cf924ee314}']
|
||||
procedure OnShowContextMenu(aContextFlags: PRUint32; aUtils: nsIContextMenuInfo); safecall;
|
||||
end;
|
||||
|
||||
nsIContextMenuInfo = interface(nsISupports)
|
||||
['{2f977d56-5485-11d4-87e2-0010a4e75ef2}']
|
||||
function GetMouseEvent(): nsIDOMEvent; safecall;
|
||||
property MouseEvent: nsIDOMEvent read GetMouseEvent;
|
||||
function GetTargetNode(): nsIDOMNode; safecall;
|
||||
property TargetNode: nsIDOMNode read GetTargetNode;
|
||||
procedure GetAssociatedLink(aAssociatedLink: nsAString); safecall;
|
||||
function GetImageContainer(): imgIContainer; safecall;
|
||||
property ImageContainer: imgIContainer read GetImageContainer;
|
||||
function GetImageSrc(): nsIURI; safecall;
|
||||
property ImageSrc: nsIURI read GetImageSrc;
|
||||
function GetBackgroundImageContainer(): imgIContainer; safecall;
|
||||
property BackgroundImageContainer: imgIContainer read GetBackgroundImageContainer;
|
||||
function GetBackgroundImageSrc(): nsIURI; safecall;
|
||||
property BackgroundImageSrc: nsIURI read GetBackgroundImageSrc;
|
||||
end;
|
||||
|
||||
nsIWebNavigation = interface(nsISupports)
|
||||
['{f5d9e7b0-d930-11d3-b057-00a024ffc08c}']
|
||||
function GetCanGoBack(): PRBool; safecall;
|
||||
property CanGoBack: PRBool read GetCanGoBack;
|
||||
function GetCanGoForward(): PRBool; safecall;
|
||||
property CanGoForward: PRBool read GetCanGoForward;
|
||||
procedure GoBack(); safecall;
|
||||
procedure GoForward(); safecall;
|
||||
procedure GotoIndex(index: PRInt32); safecall;
|
||||
procedure LoadURI(const uri: PWideChar; loadFlags: PRUint32; referrer: nsIURI; postData: nsIInputStream; headers: nsIInputStream); safecall;
|
||||
procedure Reload(reloadFlags: PRUint32); safecall;
|
||||
procedure Stop(stopFlags: PRUint32); safecall;
|
||||
function GetDocument(): nsIDOMDocument; safecall;
|
||||
property Document: nsIDOMDocument read GetDocument;
|
||||
function GetCurrentURI(): nsIURI; safecall;
|
||||
property CurrentURI: nsIURI read GetCurrentURI;
|
||||
function GetReferringURI(): nsIURI; safecall;
|
||||
property ReferringURI: nsIURI read GetReferringURI;
|
||||
function GetSessionHistory(): nsISHistory; safecall;
|
||||
procedure SetSessionHistory(aSessionHistory: nsISHistory); safecall;
|
||||
property SessionHistory: nsISHistory read GetSessionHistory write SetSessionHistory;
|
||||
end;
|
||||
|
||||
implementation
|
||||
|
||||
end.
|
164
components/geckoport/version2/Components/CallbackInterfaces.pas
Normal file
164
components/geckoport/version2/Components/CallbackInterfaces.pas
Normal file
@ -0,0 +1,164 @@
|
||||
(* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla 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/MPL/
|
||||
*
|
||||
* 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 GeckoComponents for Delphi.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Takanori Ito.
|
||||
* Portions created by the Initial Developer are Copyright (C) 2003
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** *)
|
||||
unit CallbackInterfaces;
|
||||
|
||||
{$MACRO on}
|
||||
|
||||
{$IFDEF Windows}
|
||||
{$DEFINE extdecl:=stdcall}
|
||||
{$ELSE Windows}
|
||||
{$DEFINE extdecl:=cdecl}
|
||||
{$ENDIF}
|
||||
|
||||
{$IFNDEF FPC_HAS_CONSTREF}
|
||||
{$DEFINE constref:=const}
|
||||
{$ENDIF}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
nsXPCOM, nsTypes;
|
||||
|
||||
type
|
||||
IGeckoCreateWindowTarget = interface
|
||||
['{934D4785-B78A-43D0-ABAD-1CC71AC06E24}']
|
||||
function GetWebBrowserChrome: nsIWebBrowserChrome;
|
||||
function DoCreateChromeWindow(chromeFlags: Longword): nsIWebBrowserChrome;
|
||||
end;
|
||||
|
||||
IGeckoBrowserChrome = interface
|
||||
['{8852637D-BB99-4ADA-82C8-8B94AFEC23C6}']
|
||||
function GetCreateWindowTarget: IGeckoCreateWindowTarget;
|
||||
end;
|
||||
|
||||
function InitWindowCreator: Boolean;
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
Classes, SysUtils, nsError, nsXPCOMGlue, GeckoChromeWindow;
|
||||
|
||||
type
|
||||
TWindowCreator = class(TInterfacedObject,
|
||||
nsIWindowCreator)
|
||||
function CreateChromeWindow(parent: nsIWebBrowserChrome;
|
||||
chromeFlags: PRUint32):
|
||||
nsIWebBrowserChrome; safecall;
|
||||
function SafeCallException(Obj: TObject; Addr: Pointer): HResult; override;
|
||||
end;
|
||||
|
||||
{$PUSH}
|
||||
{$HINTS OFF}
|
||||
procedure UseParameter(var X);
|
||||
begin
|
||||
end;
|
||||
{$POP}
|
||||
|
||||
function FindTarget(chrome: nsIWebBrowserChrome): IGeckoCreateWindowTarget;
|
||||
var
|
||||
chrome2: IGeckoBrowserChrome;
|
||||
begin
|
||||
if Supports(chrome, IGeckoBrowserChrome, chrome2) then
|
||||
begin
|
||||
Result := chrome2.GetCreateWindowTarget;
|
||||
end;
|
||||
end;
|
||||
|
||||
var
|
||||
sWindowCreatorInitialized: Boolean = False;
|
||||
sWindowCreator: TWindowCreator = nil;
|
||||
|
||||
function InitWindowCreator: Boolean;
|
||||
const
|
||||
NS_WINDOWWATCHER_CONTRACTID = '@mozilla.org/embedcomp/window-watcher;1';
|
||||
var
|
||||
creator: TWindowCreator;
|
||||
wwatch: nsIWindowWatcher;
|
||||
begin
|
||||
try
|
||||
Result := False;
|
||||
if not sWindowCreatorInitialized then
|
||||
begin
|
||||
sWindowCreatorInitialized := True;
|
||||
creator := TWindowCreator.Create;
|
||||
sWindowCreator := creator;
|
||||
end;
|
||||
if not Assigned(sWindowCreator) then Exit;
|
||||
|
||||
NS_GetService(NS_WINDOWWATCHER_CONTRACTID, nsIWindowWatcher, wwatch);
|
||||
|
||||
wwatch.SetWindowCreator(sWindowCreator);
|
||||
|
||||
Result := True;
|
||||
except
|
||||
Result := False;
|
||||
end;
|
||||
end;
|
||||
|
||||
function TWindowCreator.CreateChromeWindow(parent: nsIWebBrowserChrome;
|
||||
chromeFlags: PRUint32):
|
||||
nsIWebBrowserChrome;
|
||||
var
|
||||
target: IGeckoCreateWindowTarget;
|
||||
chrome: TGeckoChromeForm;
|
||||
begin
|
||||
if (chromeFlags and CHROME_OPENAS_CHROME)<>0 then
|
||||
begin
|
||||
chrome := TGeckoChromeForm.CreateWithChromeFlags(nil, chromeFlags);
|
||||
try
|
||||
target := IGeckoCreateWindowTarget(chrome);
|
||||
Result := target.GetWebBrowserChrome;
|
||||
except
|
||||
chrome.Close;
|
||||
raise;
|
||||
end;
|
||||
end else
|
||||
begin
|
||||
target := FindTarget(parent);
|
||||
if Assigned(target) then
|
||||
Result := target.DoCreateChromeWindow(chromeFlags);
|
||||
if not Assigned(Result) then
|
||||
raise EGeckoHint.CreateFmt('Attempt to create a new Chrome window but handler does not create a new one. Chrome flags: %8X',[chromeFlags]);
|
||||
end;
|
||||
end;
|
||||
|
||||
function TWindowCreator.SafeCallException(Obj: TObject; Addr: Pointer): HResult;
|
||||
begin
|
||||
UseParameter(Obj);
|
||||
UseParameter(Addr);
|
||||
Result := HRESULT(NS_ERROR_FAILURE);
|
||||
end;
|
||||
|
||||
end.
|
BIN
components/geckoport/version2/Components/GeckoBrowser.dcr
Normal file
BIN
components/geckoport/version2/Components/GeckoBrowser.dcr
Normal file
Binary file not shown.
135
components/geckoport/version2/Components/GeckoBrowser.lrs
Executable file
135
components/geckoport/version2/Components/GeckoBrowser.lrs
Executable file
@ -0,0 +1,135 @@
|
||||
LazarusResources.Add('TGeckoBrowser','BMP',[
|
||||
'BM'#246#6#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#24#0#0#0#24#0#0#0#1#0#24#0#0#0#0#0
|
||||
+#192#6#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#128#0#128#128#0#128#128#0#128#128
|
||||
+#0#128#128#0#128#128#0#128#128#0#128#128#0#128#128#0#128#128#0#128#128#0#128
|
||||
+#128#0#128#128#0#128#128#0#128#128#0#128#128#0#128#128#0#128#128#0#128#128#0
|
||||
+#128#0#0#0#128#128#128#0#0#0#0#0#128#0#0#255#128#0#128#128#0#128#128#0#128
|
||||
+#128#0#128#128#0#128#128#0#128#0#0#0#0#0#0#0#0#0#0#0#0#128#0#128#128#0#128
|
||||
+#128#0#128#128#0#128#128#0#128#128#0#128#128#0#128#0#0#0#0#0#0#0#0#0#128#128
|
||||
+#128#0#0#0#0#0#255#0#0#255#128#0#128#128#0#128#128#0#128#128#0#128#128#0#128
|
||||
+#0#0#0#0#0#0#0#0#128#0#0#128#0#0#128#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#128#128#128#128#128#128#0#0#0#0#0#0#0#0#128#128#0#128#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#128#0#0#128#0#0#255#0#0#255#0#0#128#0#0#128
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#128#0#0#128#0#0#128#0#0#255#0#0#255#0#0#128#0#0
|
||||
+#0#128#0#128#0#0#0#128#128#128#128#128#128#128#128#128#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#128#0#0#128#0#0#255#0#0#255#0#0#255#0#0#255#0#0#255#0#0#255#0#0
|
||||
+#255#0#0#255#0#0#255#0#0#255#0#0#255#0#0#128#0#0#0#0#0#0#0#0#0#0#0#0#128#128
|
||||
+#128#128#128#128#0#0#0#0#128#128#128#128#128#0#0#0#0#0#0#0#0#0#0#0#0#0#0#128
|
||||
+#0#0#255#0#0#255#0#0#128#0#0#128#0#0#255#0#0#255#0#0#255#0#0#255#0#0#255#0#0
|
||||
+#255#0#0#0#0#0#0#0#0#128#0#0#128#0#0#128#0#0#128#0#0#0#0#0#0#128#128#128#128
|
||||
+#128#128#128#128#128#0#0#0#0#0#0#0#0#0#0#0#0#0#0#128#0#0#128#0#0#0#0#0#128#0
|
||||
+#0#128#0#0#255#0#0#255#0#0#255#0#0#255#0#0#0#0#0#128#0#0#255#0#0#255#0#0#255
|
||||
+#0#0#255#0#0#255#0#0#128#0#0#128#0#0#0#0#0#0#128#128#128#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#128#0#0#0#0#0#0#0#0#0#0#0#255#0#0#255#0#0#255#0#0#255#0#0#0#0#0#255
|
||||
+#0#0#128#0#0#255#0#0#255#0#0#255#0#0#255#0#0#255#0#0#255#0#0#128#0#0#128#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#128#0#0#255#0#0#255#0
|
||||
+#0#255#0#0#0#0#0#128#0#0#0#0#0#255#0#0#255#0#0#255#0#0#255#0#0#255#0#0#255#0
|
||||
+#0#255#0#0#255#0#0#128#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#128#0#0#255#0#0#255#0#0#255#0#0#0#0#0#0#0#0#0#0#0#128#0#0#255#0#0#255#0#0
|
||||
+#255#0#0#255#0#0#255#0#0#255#0#0#255#0#0#255#0#0#255#0#0#128#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#128#0#0#128#0#0#128#0#0#255#0#0#255#0#0#255#0#0#0#0#0#0#0#0#128
|
||||
+#0#0#255#0#0#255#0#0#255#0#0#255#0#0#255#0#0#255#0#0#255#0#0#255#0#0#255#0#0
|
||||
+#255#0#0#255#0#0#128#0#0#0#0#0#0#0#0#0#0#0#128#0#0#255#0#0#128#0#0#255#0#0
|
||||
+#255#0#0#255#0#0#0#0#0#0#0#0#128#0#0#255#0#0#255#0#0#255#0#0#255#0#0#255#0#0
|
||||
+#255#0#0#255#0#0#255#0#0#255#0#0#255#0#0#255#0#0#255#0#0#128#0#0#0#0#0#0#0#0
|
||||
+#128#0#0#255#0#0#128#0#0#255#0#0#255#0#0#255#128#0#128#0#0#0#0#0#0#0#0#128#0
|
||||
+#0#128#0#0#255#0#0#255#0#0#255#0#0#255#0#0#255#0#0#255#0#0#255#0#0#255#0#0
|
||||
+#255#0#0#255#0#0#255#0#0#255#0#0#128#0#0#0#0#0#128#0#0#255#0#0#255#0#0#255#0
|
||||
+#0#255#128#0#128#128#0#128#128#0#128#0#0#0#0#0#0#0#0#0#0#0#128#0#0#255#0#0
|
||||
+#255#0#0#255#0#0#255#0#0#255#0#0#255#0#0#255#0#0#255#0#0#255#0#0#255#0#0#255
|
||||
+#0#0#128#0#0#0#0#0#255#0#0#255#0#0#0#0#0#0#128#0#128#128#0#128#128#0#128#128
|
||||
+#0#128#128#0#128#0#0#0#0#0#0#0#0#0#0#0#128#0#0#128#0#0#255#0#0#255#0#0#255#0
|
||||
+#0#255#0#0#128#0#0#128#0#0#0#0#0#128#0#0#255#0#0#255#0#0#128#0#0#255#0#0#128
|
||||
+#0#0#0#128#0#128#128#0#128#128#0#128#128#0#128#128#0#128#128#0#128#128#0#128
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#128#0#0#128#0#0#0#0#0#0#0#0#128#0#0#128#0#0#128
|
||||
+#0#0#255#0#0#128#0#0#255#0#0#128#0#0#0#0#0#0#128#0#128#128#0#128#128#0#128
|
||||
+#128#0#128#128#0#128#128#0#128#128#0#128#128#0#128#128#0#128#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#128#0#0#128#128#128#128#0#0#0#0#0#0#0#0#128#0#0#128#0#0#0#0#0#128#0#0
|
||||
+#128#0#0#0#0#0#0#128#0#128#128#0#128#128#0#128#128#0#128#128#0#128#128#0#128
|
||||
+#128#0#128#128#0#128#128#0#128#128#0#128#128#0#128#0#0#0#0#0#0#0#0#0#128#128
|
||||
+#128#0#0#0#128#128#128#0#0#0#0#0#255#0#0#0#0#0#0#0#0#255#0#0#128#0#0#128#128
|
||||
+#0#128#128#0#128#128#0#128#128#0#128#128#0#128#128#0#128#128#0#128#128#0#128
|
||||
+#128#0#128#128#0#128#128#0#128#128#0#128#0#0#0#0#0#0#0#0#0#0#0#0#128#128#128
|
||||
+#0#0#128#0#0#128#0#0#0#0#0#0#0#0#0#0#0#0#0#0#128#128#0#128#128#0#128#128#0
|
||||
+#128#128#0#128#128#0#128#128#0#128#128#0#128#128#0#128#128#0#128#128#0#128
|
||||
+#128#0#128#128#0#128#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#128#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#128#0#0#128#0#0#255#128#0#128#128#0#128#128#0#128#128#0#128#128#0#128
|
||||
+#128#0#128#128#0#128#128#0#128#128#0#128#128#0#128#128#0#128#128#0#128#128#0
|
||||
+#128#0#0#0#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#255#0#0#255#0#0#128#0
|
||||
+#0#128#0#0#255#128#0#128#128#0#128#128#0#128#128#0#128#128#0#128#128#0#128
|
||||
+#128#0#128#128#0#128#128#0#128#128#0#128#128#0#128#128#0#128#128#0#128#0#0#0
|
||||
+#0#0#128#0#0#255#0#0#255#0#0#128#0#0#128#0#0#128#0#0#0#0#0#0#0#0#128#0#0#128
|
||||
+#128#0#128#128#0#128#128#0#128#128#0#128#128#0#128#128#0#128#128#0#128#128#0
|
||||
+#128#128#0#128#128#0#128#128#0#128#128#0#128#128#0#128#128#0#128#0#0#128#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#128#0#0#128#0#0#0#0#0#0#0#0#0
|
||||
]);
|
||||
LazarusResources.Add('TGeckoPrompt','BMP',[
|
||||
'BMv'#6#0#0#0#0#0#0'6'#4#0#0'('#0#0#0#24#0#0#0#24#0#0#0#1#0#8#0#0#0#0#0#0#0#0
|
||||
+#0#196#14#0#0#196#14#0#0#0#1#0#0#0#1#0#0'@@@'#255'{bP'#255'}bR'#255'|dR'#255
|
||||
+#127'gY'#255'~nb'#255#206'J.'#255#219'G)'#255#220'I,'#255#213'U:'#255#221'\='
|
||||
+#255#226'R3'#255#226'S5'#255#234'V3'#255#228'Y;'#255#243'^9'#255#131'kZ'#255
|
||||
+#133'n^'#255#156'n_'#255#142'q['#255#145't_'#255#160'm_'#255#133'tf'#255#138
|
||||
+'ve'#255#143'ud'#255#140'wf'#255#141'vh'#255#142'xj'#255#147'{j'#255#146'~o'
|
||||
+#255#150#127'o'#255#141#127'{'#255#145#127's'#255#168'wi'#255#229'fE'#255#237
|
||||
+'aA'#255#237'cC'#255#245'fB'#255#246'hE'#255#254'iA'#255#252'mG'#255#252'pJ'
|
||||
+#255#254'qI'#255#253'tN'#255#234'sQ'#255#236'tR'#255#235'{['#255#236'zY'#255
|
||||
+#254'xR'#255#254'|X'#255#143#129'u'#255#144#129'u'#255#145#129'u'#255#146#130
|
||||
+'v'#255#152#130'u'#255#153#133'v'#255#154#133'w'#255#147#132'x'#255#148#132
|
||||
+'y'#255#149#133'z'#255#148#134'z'#255#149#134'z'#255#150#135'{'#255#149#135
|
||||
+'|'#255#153#134'{'#255#151#136'}'#255#153#136'y'#255#155#139'~'#255#156#139
|
||||
+#127#255#157#139'~'#255#180#135'{'#255#254#128'\'#255#236#129'b'#255#236#136
|
||||
+'j'#255#254#136'f'#255#236#142's'#255#254#143'p'#255#255#143'p'#255#236#149
|
||||
+'|'#255#254#150'z'#255'~v'#138#255'kr'#181#255'hp'#186#255#131'y'#139#255#129
|
||||
+'y'#140#255#220#0#255#255'q'#178#218#255#128#128#128#255#134#134#134#255#135
|
||||
+#134#134#255#133#128#140#255#153#139#129#255#157#140#128#255#158#142#130#255
|
||||
+#156#144#129#255#157#144#134#255#149#148#147#255#148#148#148#255#149#149#149
|
||||
+#255#160#145#133#255#161#146#134#255#162#146#135#255#163#147#136#255#165#145
|
||||
+#136#255#164#148#137#255#165#150#138#255#166#150#139#255#161#148#140#255#162
|
||||
+#149#140#255#168#151#138#255#167#153#142#255#171#152#139#255#169#153#142#255
|
||||
+#181#149#135#255#189#157#143#255#162#146#145#255#162#151#147#255#173#160#149
|
||||
+#255#177#165#156#255#136#139#180#255#185#169#160#255#186#175#174#255#236#156
|
||||
+#132#255#254#158#132#255#255#159#133#255#196#166#154#255#236#163#141#255#254
|
||||
+#166#141#255#236#170#150#255#254#173#151#255#254#174#152#255#255#175#153#255
|
||||
+#236#177#159#255#210#179#168#255#208#180#170#255#236#182#167#255#232#187#173
|
||||
+#255#254#182#162#255#255#183#163#255#255#189#170#255#254#190#172#255#255#190
|
||||
+#173#255#225#185#176#255#254#195#179#255#254#197#182#255#254#198#183#255#244
|
||||
+#203#191#255#254#205#191#255#239#225#189#255#167#187#206#255#170#191#208#255
|
||||
+#176#197#208#255#201#200#199#255#201#193#203#255#198#200#200#255#199#200#201
|
||||
+#255#200#201#202#255#204#203#203#255#206#204#203#255#205#203#204#255#204#204
|
||||
+#205#255#207#205#204#255#213#197#194#255#218#198#195#255#208#207#207#255#220
|
||||
+#202#206#255#214#201#208#255#212#202#210#255#212#203#212#255#213#205#215#255
|
||||
+#213#207#217#255#211#210#209#255#212#212#211#255#218#216#215#255#212#208#219
|
||||
+#255#212#210#221#255#214#212#223#255#236#202#192#255#226#204#204#255#233#207
|
||||
+#203#255#237#206#200#255#242#204#194#255#238#208#201#255#239#208#200#255#253
|
||||
+#208#196#255#237#224#194#255#237#227#205#255#246#233#200#255#225#224#223#255
|
||||
+#218#216#224#255#225#221#227#255#228#228#228#255#229#229#229#255#231#231#231
|
||||
+#255#233#226#228#255#239#230#229#255#231#232#231#255#237#235#231#255#232#231
|
||||
+#232#255#233#232#232#255#235#234#234#255#236#235#235#255#238#237#235#255#238
|
||||
+#237#237#255#238#238#238#255#239#239#239#255#243#233#231#255#244#234#230#255
|
||||
+#240#240#239#255#240#240#240#255#242#241#241#255#253#253#253#255#255#255#255
|
||||
+#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0
|
||||
+#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0
|
||||
+#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0
|
||||
+#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0
|
||||
+#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0
|
||||
+#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255'U'#0'UU'#0'U'#0'U'
|
||||
+#0'UU'#0'UUU'#0'U'#0'UUU'#0'UUU'#0#0'U'#0#0'U'#0'U'#0'U'#0'U'#0'U'#0'U'#0#0
|
||||
+'UU'#0'UUU'#0'U'#0#0'U'#0#0'U'#0'U'#0#0'U'#0#0'U'#0'U'#0'U'#0'UUU'#0#0'U'#0#0
|
||||
+'UU'#0'UU'#0'UUU'#0'U'#0#0'U'#0#0#0'UUUUUUUUUUUUUUUUUUUUUUUUU'#22':5549>:454'
|
||||
+'33<==5244444'#5'j'#209#209#209#209#209#209#209#209#209'YWWWY'#185#186'XWWWX'
|
||||
+#193'5i'#209#209#209#209#209#209#209#209#209'W'#212#212#212'W'#187#148'W'#212
|
||||
+#212#212'W'#191'9h'#209#209#209#209#209#209#209#209#209'bWWW`'#197#202'aWWWa'
|
||||
+#204':f'#209#209#209#209#209#209#209#209#209#209#209#209#209#209#209#209#209
|
||||
+#209#209#209#209#209':e'#209'YWWWWWWWWWWWWWWWWWWY'#209';d'#157'W'#212#212#212
|
||||
+#212#212#212#212#212#212#212#212#212#212#212#212#212#212#212'W'#209'=e'#205
|
||||
+'bWWWWWWWWWWWWWWWWWWb'#208'>f'#159#158#155#152#200#209#209#210's'#199#172#156
|
||||
+#171#154#161#160#164#188#211#192#196#201'An'#209'YWWWWWWWWWWWWWWWWWWY'#203'['
|
||||
+'u'#173'W'#212#212#212#212#212#212#212#212#212#212#212#212#212#212#212#212
|
||||
+#212#212'W'#209'_v'#198'aWWWWWWWWWWWWWWWWWWb'#209'kx'#207#207#206#195#194#190
|
||||
+#189#176#175#174#170#169#168#167#166#165#178#179#182#183#180#180'g'#134#147
|
||||
+#181#177#163#143#139#137#129#127'{OLJG0*''('#15#13#14#8'F}'#184#162#150#149
|
||||
,#145#141#138#131#127'|OMJG011)&#'#11#7'!r'#146#151'V'#153#144#140#137#130#127
|
||||
+'{OMJG0G+)%$'#12#7#21'q'#136#133'y'#142#135#132#128'~zNKIH/-.-,"'#10#9#6#18
|
||||
+'E^D\oDB'#27#26#16#1#2#3#3#4#24#19#20#30'6STP'#31'?]cpfmC@ '#29#23#17#17#25
|
||||
+'87'#28#28'ltQwRZ'
|
||||
]);
|
2349
components/geckoport/version2/Components/GeckoBrowser.pas
Executable file
2349
components/geckoport/version2/Components/GeckoBrowser.pas
Executable file
File diff suppressed because it is too large
Load Diff
20
components/geckoport/version2/Components/GeckoBrowser.rst
Normal file
20
components/geckoport/version2/Components/GeckoBrowser.rst
Normal file
@ -0,0 +1,20 @@
|
||||
|
||||
# hash value = 240817182
|
||||
geckobrowser.sgeckobrowseriniterror='Failed to initialize TGeckoBrowser.'
|
||||
|
||||
|
||||
# hash value = 197709054
|
||||
geckobrowser.sgeckobrowsercannotgoback='Failed to go back history.'
|
||||
|
||||
|
||||
# hash value = 169675006
|
||||
geckobrowser.sgeckobrowsercannotgoforward='Failed to go forward history.'
|
||||
|
||||
|
||||
# hash value = 248036432
|
||||
geckobrowser.sgeckobrowserloadurierror='Failed to load URI '#39'%s.'#39' '+
|
||||
|
||||
|
||||
# hash value = 55368478
|
||||
geckobrowser.sgeckobrowsercannotreload='Failed to reload page.'
|
||||
|
@ -0,0 +1,18 @@
|
||||
object GeckoChromeForm: TGeckoChromeForm
|
||||
Left = 192
|
||||
Top = 107
|
||||
Width = 800
|
||||
Height = 600
|
||||
Color = clBtnFace
|
||||
Font.Charset = DEFAULT_CHARSET
|
||||
Font.Color = clWindowText
|
||||
Font.Height = -12
|
||||
Font.Name = 'Tahoma'
|
||||
Font.Style = []
|
||||
OldCreateOrder = False
|
||||
OnClose = FormClose
|
||||
OnCreate = FormCreate
|
||||
OnResize = FormResize
|
||||
PixelsPerInch = 96
|
||||
TextHeight = 12
|
||||
end
|
12
components/geckoport/version2/Components/GeckoChromeWindow.lfm
Executable file
12
components/geckoport/version2/Components/GeckoChromeWindow.lfm
Executable file
@ -0,0 +1,12 @@
|
||||
object GeckoChromeForm: TGeckoChromeForm
|
||||
Left = 192
|
||||
Height = 600
|
||||
Top = 107
|
||||
Width = 800
|
||||
Font.Height = -12
|
||||
Font.Name = 'Tahoma'
|
||||
OnClose = FormClose
|
||||
OnCreate = FormCreate
|
||||
OnResize = FormResize
|
||||
LCLVersion = '0.9.29'
|
||||
end
|
8
components/geckoport/version2/Components/GeckoChromeWindow.lrs
Executable file
8
components/geckoport/version2/Components/GeckoChromeWindow.lrs
Executable file
@ -0,0 +1,8 @@
|
||||
{ This is an automatically generated lazarus resource file }
|
||||
|
||||
LazarusResources.Add('TGeckoChromeForm','FORMDATA',[
|
||||
'TPF0'#16'TGeckoChromeForm'#15'GeckoChromeForm'#4'Left'#3#192#0#6'Height'#3'X'
|
||||
+#2#3'Top'#2'k'#5'Width'#3' '#3#11'Font.Height'#2#244#9'Font.Name'#6#6'Tahoma'
|
||||
+#7'OnClose'#7#9'FormClose'#8'OnCreate'#7#10'FormCreate'#8'OnResize'#7#10'For'
|
||||
+'mResize'#10'LCLVersion'#6#6'0.9.29'#0#0
|
||||
]);
|
558
components/geckoport/version2/Components/GeckoChromeWindow.pas
Executable file
558
components/geckoport/version2/Components/GeckoChromeWindow.pas
Executable file
@ -0,0 +1,558 @@
|
||||
(* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla 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/MPL/
|
||||
*
|
||||
* 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 GeckoComponents for Delphi.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Takanori Ito.
|
||||
* Portions created by the Initial Developer are Copyright (C) 2003
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** *)
|
||||
unit GeckoChromeWindow;
|
||||
|
||||
{$MACRO on}
|
||||
|
||||
{$IFDEF Windows}
|
||||
{$DEFINE extdecl:=stdcall}
|
||||
{$ELSE Windows}
|
||||
{$DEFINE extdecl:=cdecl}
|
||||
{$ENDIF}
|
||||
|
||||
{$IFNDEF FPC_HAS_CONSTREF}
|
||||
{$DEFINE constref:=const}
|
||||
{$ENDIF}
|
||||
|
||||
{$IFDEF LCLCocoa}
|
||||
{$MODESWITCH ObjectiveC1}
|
||||
{$ENDIF}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
{$IFNDEF LCL} Windows, Messages, {$ELSE} LclIntf, LResources, {$ENDIF}
|
||||
SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
||||
Dialogs, CallbackInterfaces, nsXPCOM, nsTypes, nsXPCOM_std19
|
||||
{$IFDEF LCLCarbon}, CarbonPrivate {$ENDIF}
|
||||
{$IFDEF LCLGtk2}, gtk2 {$ENDIF}
|
||||
{$IFDEF LCLCocoa}, CocoaAll, CocoaUtils, CocoaPrivate {$ENDIF};
|
||||
|
||||
type
|
||||
//In all currently supported platforms the native window handle is a pointer
|
||||
//size handle. In Linux64 THANDLE can not be used because by default it is 32
|
||||
//bits due file descriptors which are 32 bits even in 64 bit platform.
|
||||
//Win32 WindowHandle 32 bits THANDLE 32 bits
|
||||
//Win64 WindowHandle 64 bits THANDLE 64 bits
|
||||
//Linux32 WindowHandle 32 bits THANDLE 32 bits
|
||||
//Linux64 WindowHandle 64 bits THANDLE 32 bits
|
||||
nativeWindow = PtrUInt;
|
||||
|
||||
TGeckoChromeForm = class(TForm,
|
||||
IGeckoCreateWindowTarget,
|
||||
nsIWebBrowserChrome,
|
||||
nsIEmbeddingSiteWindow,
|
||||
nsIWebProgressListener,
|
||||
nsIInterfaceRequestor_std19,
|
||||
nsIWeakReference,
|
||||
nsISupportsWeakReference)
|
||||
procedure FormClose(Sender: TObject; var Action: TCloseAction);
|
||||
procedure FormCreate(Sender: TObject);
|
||||
procedure FormResize(Sender: TObject);
|
||||
private
|
||||
{ Private 錾 }
|
||||
FWebBrowser: nsIWebBrowser;
|
||||
FChromeFlags: Longword;
|
||||
|
||||
// nsIWebBrowserChrome
|
||||
procedure SetStatus(statusType: PRUint32; const status: PWideChar); safecall;
|
||||
function GetWebBrowser(): nsIWebBrowser; safecall;
|
||||
procedure SetWebBrowser(aWebBrowser: nsIWebBrowser); safecall;
|
||||
function GetChromeFlags: PRUint32; safecall;
|
||||
procedure SetChromeFlags(aChromeFlags: PRUint32); safecall;
|
||||
procedure DestroyBrowserWindow(); safecall;
|
||||
procedure SizeBrowserTo(aCX: PRInt32; aCY: PRInt32); safecall;
|
||||
procedure ShowAsModal(); safecall;
|
||||
function IsWindowModal(): PRBool; safecall;
|
||||
procedure ExitModalEventLoop(aStatus: nsresult); safecall;
|
||||
// nsIEmbeddingSiteWindow
|
||||
procedure SetDimensions(flags: PRUint32; x, y, cx, cy: PRInt32); safecall;
|
||||
procedure GetDimensions(flags: Longword; out x, y, cx, cy: PRInt32); safecall;
|
||||
procedure SetFocus; reintroduce; safecall;
|
||||
function GetVisibility(): PRBool; safecall;
|
||||
procedure SetVisibility(Value: PRBool); safecall;
|
||||
function GetTitle(): PWideChar; safecall;
|
||||
procedure SetTitle(const Value: PWideChar); safecall;
|
||||
function GetSiteWindow: Pointer; safecall;
|
||||
// nsIWebProgressListener
|
||||
procedure OnStateChange(aWebProgress: nsIWebProgress; aRequest: nsIRequest; aStateFlags: PRUint32; aStatus: nsresult); safecall;
|
||||
procedure OnProgressChange(aWebProgress: nsIWebProgress; aRequest: nsIRequest; aCurSelfProgress: PRInt32; aMaxSelfProgress: PRInt32; aCurTotalProgress: PRInt32; aMaxTotalProgress: PRInt32); safecall;
|
||||
procedure OnLocationChange(aWebProgress: nsIWebProgress; aRequest: nsIRequest; location: nsIURI); safecall;
|
||||
procedure OnStatusChange(aWebProgress: nsIWebProgress; aRequest: nsIRequest; aStatus: nsresult; const aMessage: PWideChar); safecall;
|
||||
procedure OnSecurityChange(aWebProgress: nsIWebProgress; aRequest: nsIRequest; state: PRUint32); safecall;
|
||||
// nsIInterfaceRequestor
|
||||
function NS_GetInterface(constref uuid: TGUID; out Intf): nsresult; extdecl;
|
||||
function nsIInterfaceRequestor_std19.GetInterface = NS_GetInterface;
|
||||
// for nsIWeakReference
|
||||
procedure QueryReferent(constref IID: TGUID; out Obj); safecall;
|
||||
// for nsISupportsWeakReference
|
||||
function GetWeakReference(): nsIWeakReference; safecall;
|
||||
|
||||
function GetNativeWindow : nativeWindow; //FPC port: added this.
|
||||
procedure InitWebBrowser;
|
||||
procedure UpdateChrome;
|
||||
procedure ContentFinishedLoading;
|
||||
public
|
||||
{ Public 錾 }
|
||||
function SafeCallException(Obj: TObject; Addr: Pointer): HResult; override;
|
||||
|
||||
constructor CreateWithChromeFlags(AOwner: TComponent; aChromeFlags: Longword);
|
||||
|
||||
// IGeckoCreateWindowTarget
|
||||
function DoCreateChromeWindow(chromeFlags: Longword): nsIWebBrowserChrome;
|
||||
function GetWebBrowserChrome: nsIWebBrowserChrome;
|
||||
property WebBrowser : nsIWebBrowser read FWebBrowser; //FPC port: added this.
|
||||
end;
|
||||
|
||||
var
|
||||
GeckoChromeForm: TGeckoChromeForm;
|
||||
|
||||
implementation
|
||||
|
||||
{$IFNDEF LCL}
|
||||
{$R *.dfm}
|
||||
{$ENDIF}
|
||||
|
||||
uses
|
||||
nsXPCOMGlue, nsError, BrowserSupports;
|
||||
|
||||
{$PUSH}
|
||||
{$HINTS OFF}
|
||||
procedure UseParameter(var X);
|
||||
begin
|
||||
end;
|
||||
{$POP}
|
||||
|
||||
constructor TGeckoChromeForm.CreateWithChromeFlags(AOwner: TComponent; AChromeFlags: Longword);
|
||||
begin
|
||||
inherited Create(AOwner);
|
||||
FChromeFlags := aChromeFlags;
|
||||
UpdateChrome;
|
||||
end;
|
||||
|
||||
procedure TGeckoChromeForm.FormClose(Sender: TObject;
|
||||
var Action: TCloseAction);
|
||||
begin
|
||||
Action := caFree;
|
||||
end;
|
||||
|
||||
function TGeckoChromeForm.GetNativeWindow : nativeWindow;
|
||||
{$IFDEF LCLCocoa}
|
||||
var
|
||||
ARect : NSRect;
|
||||
AView : NSView;
|
||||
{$ENDIF}
|
||||
begin
|
||||
{$IFDEF MSWINDOWS}Result := Handle;{$ENDIF}
|
||||
|
||||
{$IFDEF LCLCarbon}Result := THANDLE(TCarbonWindow(Handle).Window);{$ENDIF}
|
||||
//Carbon doesn't work but leave in so package compiles in Carbon IDE.
|
||||
|
||||
// {$IFDEF LCLCocoa}Result := Pointer(TCocoaForm(Handle).MainWindowView.superview);{$ENDIF}
|
||||
//Old PasCocoa-based widgetset.
|
||||
|
||||
//NSLog(NSStringUtf8(FloatToStr(NSView(TCocoaWindow(Handle).contentView).frame.size.width)));
|
||||
{$IFDEF LCLCocoa}Result := THANDLE(TCocoaWindow(Handle).contentView);{$ENDIF}
|
||||
//New ObjC-based Cocoa widgetset.
|
||||
|
||||
(*
|
||||
//Does adding a view work better than using window's view (below)? No, it doesn't.
|
||||
{$IFDEF LCLCocoa}
|
||||
ARect := NSView(TCocoaWindow(Handle).contentView).visibleRect;
|
||||
ARect.size.width := ARect.size.width - 30;
|
||||
ARect.size.height := ARect.size. height - 30;
|
||||
ARect.origin.x := 15;
|
||||
ARect.origin.y := 15;
|
||||
AView := NSView.alloc.initWithFrame(ARect);
|
||||
NSView(TCocoaWindow(Handle).contentView).addSubView(AView);
|
||||
Result := THANDLE(AView);
|
||||
{$ENDIF}
|
||||
*)
|
||||
|
||||
{$IFDEF LCLGtk}Result := Handle;{$ENDIF} //Is Handle same as GTK Window?
|
||||
|
||||
{$IFDEF LCLGtk2}
|
||||
Result := nativeWindow(PGtkWindow(GeckoChromeForm.Handle)^.bin.child);
|
||||
{$ENDIF} //Is Handle same as GTK Window?
|
||||
end;
|
||||
|
||||
procedure TGeckoChromeForm.InitWebBrowser;
|
||||
var
|
||||
base: nsIBaseWindow;
|
||||
begin
|
||||
NS_CreateInstance(NS_WEBBROWSER_CID, nsIWebBrowser, FWebBrowser);
|
||||
|
||||
FWebBrowser.ContainerWindow := Self;
|
||||
|
||||
base := FWebBrowser as nsIBaseWindow;
|
||||
base.InitWindow(GetNativeWindow, nil, 0, 0, ClientWidth, ClientHeight);
|
||||
base.Create;
|
||||
FWebBrowser.AddWebBrowserListener(Self, nsIWebProgressListener);
|
||||
base.SetVisibility(True);
|
||||
end;
|
||||
|
||||
procedure TGeckoChromeForm.UpdateChrome;
|
||||
begin
|
||||
{if (FChromeFlags and CHROME_WINDOW_BORDERS)<>0 then
|
||||
if (FChromeFlags and CHROME_WINDOW_RESIZE)<>0 then
|
||||
BorderStyle := bsSizeable
|
||||
else
|
||||
if (FChromeFlags and CHROME_OPENAS_DIALOG)<>0 then
|
||||
BorderStyle := bsDialog
|
||||
else
|
||||
BorderStyle := bsSingle
|
||||
else
|
||||
BorderStyle := bsNone;}
|
||||
BorderStyle := bsSizeable;
|
||||
|
||||
{
|
||||
if (FChromeFlags and CHROME_WINDOW_CLOSE)<>0 then
|
||||
BorderIcons := BorderIcons + [biClose]
|
||||
else
|
||||
BorderIcons := BorderIcons - [biClose];
|
||||
}
|
||||
|
||||
if (FChromeFlags and CHROME_SCROLLBARS)<>0 then
|
||||
AutoScroll := True
|
||||
else
|
||||
AutoScroll := False;
|
||||
|
||||
{
|
||||
if (FChromeFlags and CHROME_TITLEBAR)<>0 then
|
||||
BorderIcons := BorderIcons + [biSystemMenu]
|
||||
else
|
||||
BorderIcons := BorderIcons - [biSystemMenu];
|
||||
}
|
||||
|
||||
end;
|
||||
|
||||
function TGeckoChromeForm.DoCreateChromeWindow(chromeFlags: Longword): nsIWebBrowserChrome;
|
||||
begin
|
||||
UseParameter(chromeFlags);
|
||||
Result := nil;
|
||||
end;
|
||||
|
||||
function TGeckoChromeForm.GetWebBrowserChrome: nsIWebBrowserChrome;
|
||||
begin
|
||||
Result := Self;
|
||||
end;
|
||||
|
||||
procedure TGeckoChromeForm.SetStatus(statusType: Longword; const status: PWideChar);
|
||||
begin
|
||||
UseParameter(statusType);
|
||||
end;
|
||||
|
||||
function TGeckoChromeForm.GetWebBrowser: nsIWebBrowser;
|
||||
begin
|
||||
Result := FWebBrowser as nsIWebBrowser;
|
||||
end;
|
||||
|
||||
procedure TGeckoChromeForm.SetWebBrowser(aWebBrowser: nsIWebBrowser);
|
||||
begin
|
||||
UseParameter(aWebBrowser);
|
||||
end;
|
||||
|
||||
function TGeckoChromeForm.GetChromeFlags: PRUint32;
|
||||
begin
|
||||
Result := FChromeFlags;
|
||||
end;
|
||||
|
||||
procedure TGeckoChromeForm.SetChromeFlags(aChromeFlags: Longword);
|
||||
begin
|
||||
FChromeFlags := aChromeFlags;
|
||||
UpdateChrome;
|
||||
end;
|
||||
|
||||
procedure TGeckoChromeForm.DestroyBrowserWindow;
|
||||
begin
|
||||
Close;
|
||||
end;
|
||||
|
||||
procedure TGeckoChromeForm.SizeBrowserTo(aCX, aCY: Integer);
|
||||
var
|
||||
dx, dy: Integer;
|
||||
begin
|
||||
dx := Width - ClientWidth;
|
||||
dy := Height - ClientHeight;
|
||||
SetBounds(Left, Top, aCX+dx, aCY+dy);
|
||||
end;
|
||||
|
||||
procedure TGeckoChromeForm.ShowAsModal;
|
||||
begin
|
||||
Visible := False;
|
||||
ShowModal;
|
||||
end;
|
||||
|
||||
function TGeckoChromeForm.IsWindowModal: PRBool;
|
||||
begin
|
||||
Result := False;
|
||||
end;
|
||||
|
||||
procedure TGeckoChromeForm.ExitModalEventLoop(aStatus: nsresult); safecall;
|
||||
begin
|
||||
UseParameter(aStatus);
|
||||
ModalResult := 1;
|
||||
end;
|
||||
|
||||
procedure TGeckoChromeForm.SetDimensions(flags: Longword; x, y, cx, cy: Longint);
|
||||
const
|
||||
FLAGS_POSITION = NS_IEMBEDDINGSITEWINDOW_DIM_FLAGS_POSITION;
|
||||
FLAGS_SIZE_INNER = ns_IEmbeddingSiteWindow_DIM_FLAGS_SIZE_INNER;
|
||||
FLAGS_SIZE_OUTER = ns_IEmbeddingSiteWindow_DIM_FLAGS_SIZE_OUTER;
|
||||
var
|
||||
dx, dy: Integer;
|
||||
begin
|
||||
dx := Width - ClientWidth;
|
||||
dy := Height - ClientHeight;
|
||||
|
||||
if (flags and FLAGS_POSITION)<>0 then
|
||||
begin
|
||||
if (flags and FLAGS_SIZE_INNER)<>0 then
|
||||
begin
|
||||
Bounds(x, y, cx+dx, cy+dy);
|
||||
end else
|
||||
if (flags and FLAGS_SIZE_OUTER)<>0 then
|
||||
begin
|
||||
Bounds(x, y, cx, cy);
|
||||
end else
|
||||
begin
|
||||
Bounds(x, y, Width, Height);
|
||||
end;
|
||||
end else
|
||||
if (flags and FLAGS_SIZE_INNER)<>0 then
|
||||
begin
|
||||
Bounds(Left, Top, cx+dx, cy+dy);
|
||||
end else
|
||||
if (flags and FLAGS_SIZE_OUTER)<>0 then
|
||||
begin
|
||||
Bounds(Left, Top, cx, cy);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TGeckoChromeForm.GetDimensions(flags: Longword; out x, y, cx, cy: Longint);
|
||||
const
|
||||
FLAGS_POSITION = ns_IEmbeddingSiteWindow_DIM_FLAGS_POSITION;
|
||||
FLAGS_SIZE_INNER = ns_IEmbeddingSiteWindow_DIM_FLAGS_SIZE_INNER;
|
||||
FLAGS_SIZE_OUTER = ns_IEmbeddingSiteWindow_DIM_FLAGS_SIZE_OUTER;
|
||||
begin
|
||||
if (flags and FLAGS_POSITION)<>0 then
|
||||
begin
|
||||
x := Left;
|
||||
y := Top;
|
||||
end;
|
||||
|
||||
if (flags and FLAGS_SIZE_INNER)<>0 then
|
||||
begin
|
||||
cx := ClientWidth;
|
||||
cy := ClientHeight;
|
||||
end else
|
||||
if (flags and FLAGS_SIZE_OUTER)<>0 then
|
||||
begin
|
||||
cx := Width;
|
||||
cy := Height;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TGeckoChromeForm.SetFocus();
|
||||
begin
|
||||
end;
|
||||
|
||||
function TGeckoChromeForm.GetVisibility: PRBool;
|
||||
begin
|
||||
Result := True;
|
||||
end;
|
||||
|
||||
procedure TGeckoChromeForm.SetVisibility(Value: LongBool);
|
||||
begin
|
||||
UseParameter(Value);
|
||||
Visible := Value;
|
||||
end;
|
||||
|
||||
function TGeckoChromeForm.GetTitle: PWideChar;
|
||||
begin
|
||||
Result := nil;
|
||||
end;
|
||||
|
||||
procedure TGeckoChromeForm.SetTitle(const Value: PWideChar);
|
||||
begin
|
||||
Caption := WideString(Value);
|
||||
end;
|
||||
|
||||
function TGeckoChromeForm.GetSiteWindow: Pointer;
|
||||
begin
|
||||
//Known "not safe" conversion.
|
||||
{$PUSH}
|
||||
{$HINTS OFF}
|
||||
Result := Pointer(GetNativeWindow);
|
||||
{$POP}
|
||||
end;
|
||||
|
||||
procedure TGeckoChromeForm.OnStateChange(aWebProgress: nsIWebProgress; aRequest: nsIRequest; aStateFlags: PRUint32; aStatus: nsresult);
|
||||
begin
|
||||
UseParameter(aWebProgress);
|
||||
UseParameter(aRequest);
|
||||
UseParameter(aStatus);
|
||||
if ((aStateFlags and NS_IWEBPROGRESSLISTENER_STATE_STOP)<>0) and
|
||||
((aStateFlags and NS_IWEBPROGRESSLISTENER_STATE_IS_DOCUMENT)<>0) then
|
||||
begin
|
||||
ContentFinishedLoading();
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TGeckoChromeForm.OnProgressChange(aWebProgress: nsIWebProgress; aRequest: nsIRequest; aCurSelfProgress: PRInt32; aMaxSelfProgress: PRInt32; aCurTotalProgress: PRInt32; aMaxTotalProgress: PRInt32);
|
||||
begin
|
||||
UseParameter(aWebProgress);
|
||||
UseParameter(aRequest);
|
||||
UseParameter(aCurSelfProgress);
|
||||
UseParameter(aMaxSelfProgress);
|
||||
UseParameter(aCurTotalProgress);
|
||||
UseParameter(aMaxTotalProgress);
|
||||
end;
|
||||
|
||||
procedure TGeckoChromeForm.OnLocationChange(aWebProgress: nsIWebProgress; aRequest: nsIRequest; location: nsIURI);
|
||||
begin
|
||||
UseParameter(aWebProgress);
|
||||
UseParameter(aRequest);
|
||||
UseParameter(location);
|
||||
end;
|
||||
|
||||
procedure TGeckoChromeForm.OnStatusChange(aWebProgress: nsIWebProgress; aRequest: nsIRequest; aStatus: nsresult; const aMessage: PWideChar);
|
||||
begin
|
||||
UseParameter(aWebProgress);
|
||||
UseParameter(aRequest);
|
||||
UseParameter(aStatus);
|
||||
end;
|
||||
|
||||
procedure TGeckoChromeForm.OnSecurityChange(aWebProgress: nsIWebProgress; aRequest: nsIRequest; state: PRUint32);
|
||||
begin
|
||||
UseParameter(aWebProgress);
|
||||
UseParameter(aRequest);
|
||||
UseParameter(state);
|
||||
end;
|
||||
|
||||
function TGeckoChromeForm.NS_GetInterface(constref uuid: TGUID; out Intf): nsresult;
|
||||
var
|
||||
domwin: nsIDOMWindow;
|
||||
begin
|
||||
if IsEqualGUID(uuid, nsIDOMWindow) then
|
||||
begin
|
||||
if Assigned(FWebBrowser) then
|
||||
begin
|
||||
domwin := FWebBrowser.ContentDOMWindow;
|
||||
Result := domwin.QueryInterface(uuid, Intf);
|
||||
end else
|
||||
Result := NS_ERROR_NOT_INITIALIZED;
|
||||
end else
|
||||
begin
|
||||
// FPC port: Result is PRUInt32, but QueryInterface returns Longint,
|
||||
// so cast to nsresult to prevent range check error.
|
||||
try
|
||||
Result := nsresult(QueryInterface(uuid, Intf));
|
||||
except
|
||||
Result:=0;
|
||||
Integer(Intf):=0;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TGeckoChromeForm.QueryReferent(constref IID: TGUID; out Obj);
|
||||
var
|
||||
rv: nsresult;
|
||||
begin
|
||||
rv := QueryInterface(IID, Obj);
|
||||
if NS_FAILED(rv) then
|
||||
raise EIntfCastError.Create('QueryReferent');
|
||||
end;
|
||||
|
||||
function TGeckoChromeForm.GetWeakReference: nsIWeakReference;
|
||||
begin
|
||||
Result := Self as nsIWeakReference;
|
||||
end;
|
||||
|
||||
procedure TGeckoChromeForm.FormCreate(Sender: TObject);
|
||||
begin
|
||||
InitWebBrowser;
|
||||
end;
|
||||
|
||||
procedure TGeckoChromeForm.FormResize(Sender: TObject);
|
||||
var
|
||||
baseWin: nsIBaseWindow;
|
||||
begin
|
||||
baseWin:=FWebBrowser as nsIBaseWindow;
|
||||
baseWin.SetPositionAndSize(0, 0, ClientWidth, ClientHeight, True);
|
||||
baseWin.SetVisibility(True);
|
||||
end;
|
||||
|
||||
procedure TGeckoChromeForm.ContentFinishedLoading;
|
||||
var
|
||||
contentWin: nsIDOMWindow;
|
||||
baseWin: nsIBaseWindow;
|
||||
begin
|
||||
contentWin := FWebBrowser.ContentDOMWindow;
|
||||
try
|
||||
//Will try to resize the form to the size of the HTML page, but if the HTML
|
||||
//does not have a width specified (UNRESTRICTED) it will raise an exception
|
||||
//and badly resize the HTML content.
|
||||
contentWin.SizeToContent;
|
||||
except
|
||||
//Workaround
|
||||
baseWin:=FWebBrowser as nsIBaseWindow;
|
||||
//Forces reflow...
|
||||
baseWin.SetPositionAndSize(0,0,ClientWidth, ClientHeight+1, false);
|
||||
baseWin.SetPositionAndSize(0,0,ClientWidth, ClientHeight, true);
|
||||
end;
|
||||
Visible:=true;
|
||||
end;
|
||||
|
||||
{$IFDEF LCL}
|
||||
const
|
||||
E_FAIL = HRESULT($80004005);
|
||||
{$ENDIF}
|
||||
|
||||
function TGeckoChromeForm.SafeCallException(Obj: TObject; Addr: Pointer): HResult;
|
||||
begin
|
||||
UseParameter(Addr);
|
||||
if Obj is EIntfCastError then
|
||||
Result := E_NOINTERFACE
|
||||
else
|
||||
Result := E_FAIL;
|
||||
end;
|
||||
|
||||
initialization
|
||||
{$IFDEF LCL}
|
||||
{$I GeckoChromeWindow.lrs}
|
||||
{$ENDIF}
|
||||
|
||||
end.
|
175
components/geckoport/version2/Components/GeckoComponents.bdsproj
Normal file
175
components/geckoport/version2/Components/GeckoComponents.bdsproj
Normal file
@ -0,0 +1,175 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<BorlandProject>
|
||||
<PersonalityInfo>
|
||||
<Option>
|
||||
<Option Name="Personality">Delphi.Personality</Option>
|
||||
<Option Name="ProjectType">VCLApplication</Option>
|
||||
<Option Name="Version">1.0</Option>
|
||||
<Option Name="GUID">{8F5E9F94-0EAD-4709-89B8-171CF26AA59B}</Option>
|
||||
</Option>
|
||||
</PersonalityInfo>
|
||||
<Delphi.Personality>
|
||||
<Source>
|
||||
<Source Name="MainSource">GeckoComponents.dpk</Source>
|
||||
</Source>
|
||||
<FileVersion>
|
||||
<FileVersion Name="Version">7.0</FileVersion>
|
||||
</FileVersion>
|
||||
<Compiler>
|
||||
<Compiler Name="A">8</Compiler>
|
||||
<Compiler Name="B">0</Compiler>
|
||||
<Compiler Name="C">1</Compiler>
|
||||
<Compiler Name="D">1</Compiler>
|
||||
<Compiler Name="E">0</Compiler>
|
||||
<Compiler Name="F">0</Compiler>
|
||||
<Compiler Name="G">1</Compiler>
|
||||
<Compiler Name="H">1</Compiler>
|
||||
<Compiler Name="I">1</Compiler>
|
||||
<Compiler Name="J">0</Compiler>
|
||||
<Compiler Name="K">0</Compiler>
|
||||
<Compiler Name="L">1</Compiler>
|
||||
<Compiler Name="M">0</Compiler>
|
||||
<Compiler Name="N">1</Compiler>
|
||||
<Compiler Name="O">1</Compiler>
|
||||
<Compiler Name="P">1</Compiler>
|
||||
<Compiler Name="Q">0</Compiler>
|
||||
<Compiler Name="R">0</Compiler>
|
||||
<Compiler Name="S">0</Compiler>
|
||||
<Compiler Name="T">1</Compiler>
|
||||
<Compiler Name="U">0</Compiler>
|
||||
<Compiler Name="V">1</Compiler>
|
||||
<Compiler Name="W">0</Compiler>
|
||||
<Compiler Name="X">1</Compiler>
|
||||
<Compiler Name="Y">1</Compiler>
|
||||
<Compiler Name="Z">1</Compiler>
|
||||
<Compiler Name="ShowHints">True</Compiler>
|
||||
<Compiler Name="ShowWarnings">True</Compiler>
|
||||
<Compiler Name="UnitAliases">WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;</Compiler>
|
||||
<Compiler Name="NamespacePrefix"></Compiler>
|
||||
<Compiler Name="GenerateDocumentation">False</Compiler>
|
||||
<Compiler Name="DefaultNamespace"></Compiler>
|
||||
<Compiler Name="SymbolDeprecated">True</Compiler>
|
||||
<Compiler Name="SymbolLibrary">True</Compiler>
|
||||
<Compiler Name="SymbolPlatform">True</Compiler>
|
||||
<Compiler Name="SymbolExperimental">True</Compiler>
|
||||
<Compiler Name="UnitLibrary">True</Compiler>
|
||||
<Compiler Name="UnitPlatform">True</Compiler>
|
||||
<Compiler Name="UnitDeprecated">True</Compiler>
|
||||
<Compiler Name="UnitExperimental">True</Compiler>
|
||||
<Compiler Name="HResultCompat">True</Compiler>
|
||||
<Compiler Name="HidingMember">True</Compiler>
|
||||
<Compiler Name="HiddenVirtual">True</Compiler>
|
||||
<Compiler Name="Garbage">True</Compiler>
|
||||
<Compiler Name="BoundsError">True</Compiler>
|
||||
<Compiler Name="ZeroNilCompat">True</Compiler>
|
||||
<Compiler Name="StringConstTruncated">True</Compiler>
|
||||
<Compiler Name="ForLoopVarVarPar">True</Compiler>
|
||||
<Compiler Name="TypedConstVarPar">True</Compiler>
|
||||
<Compiler Name="AsgToTypedConst">True</Compiler>
|
||||
<Compiler Name="CaseLabelRange">True</Compiler>
|
||||
<Compiler Name="ForVariable">True</Compiler>
|
||||
<Compiler Name="ConstructingAbstract">True</Compiler>
|
||||
<Compiler Name="ComparisonFalse">True</Compiler>
|
||||
<Compiler Name="ComparisonTrue">True</Compiler>
|
||||
<Compiler Name="ComparingSignedUnsigned">True</Compiler>
|
||||
<Compiler Name="CombiningSignedUnsigned">True</Compiler>
|
||||
<Compiler Name="UnsupportedConstruct">True</Compiler>
|
||||
<Compiler Name="FileOpen">True</Compiler>
|
||||
<Compiler Name="FileOpenUnitSrc">True</Compiler>
|
||||
<Compiler Name="BadGlobalSymbol">True</Compiler>
|
||||
<Compiler Name="DuplicateConstructorDestructor">True</Compiler>
|
||||
<Compiler Name="InvalidDirective">True</Compiler>
|
||||
<Compiler Name="PackageNoLink">True</Compiler>
|
||||
<Compiler Name="PackageThreadVar">True</Compiler>
|
||||
<Compiler Name="ImplicitImport">True</Compiler>
|
||||
<Compiler Name="HPPEMITIgnored">True</Compiler>
|
||||
<Compiler Name="NoRetVal">True</Compiler>
|
||||
<Compiler Name="UseBeforeDef">True</Compiler>
|
||||
<Compiler Name="ForLoopVarUndef">True</Compiler>
|
||||
<Compiler Name="UnitNameMismatch">True</Compiler>
|
||||
<Compiler Name="NoCFGFileFound">True</Compiler>
|
||||
<Compiler Name="ImplicitVariants">True</Compiler>
|
||||
<Compiler Name="UnicodeToLocale">True</Compiler>
|
||||
<Compiler Name="LocaleToUnicode">True</Compiler>
|
||||
<Compiler Name="ImagebaseMultiple">True</Compiler>
|
||||
<Compiler Name="SuspiciousTypecast">True</Compiler>
|
||||
<Compiler Name="PrivatePropAccessor">True</Compiler>
|
||||
<Compiler Name="UnsafeType">False</Compiler>
|
||||
<Compiler Name="UnsafeCode">False</Compiler>
|
||||
<Compiler Name="UnsafeCast">False</Compiler>
|
||||
<Compiler Name="OptionTruncated">True</Compiler>
|
||||
<Compiler Name="WideCharReduced">True</Compiler>
|
||||
<Compiler Name="DuplicatesIgnored">True</Compiler>
|
||||
<Compiler Name="UnitInitSeq">True</Compiler>
|
||||
<Compiler Name="LocalPInvoke">True</Compiler>
|
||||
<Compiler Name="MessageDirective">True</Compiler>
|
||||
<Compiler Name="CodePage"></Compiler>
|
||||
</Compiler>
|
||||
<Linker>
|
||||
<Linker Name="MapFile">0</Linker>
|
||||
<Linker Name="OutputObjs">0</Linker>
|
||||
<Linker Name="GenerateHpps">False</Linker>
|
||||
<Linker Name="ConsoleApp">1</Linker>
|
||||
<Linker Name="DebugInfo">False</Linker>
|
||||
<Linker Name="RemoteSymbols">False</Linker>
|
||||
<Linker Name="GenerateDRC">False</Linker>
|
||||
<Linker Name="MinStackSize">16384</Linker>
|
||||
<Linker Name="MaxStackSize">1048576</Linker>
|
||||
<Linker Name="ImageBase">4194304</Linker>
|
||||
<Linker Name="ExeDescription">Gecko Components</Linker>
|
||||
</Linker>
|
||||
<Directories>
|
||||
<Directories Name="OutputDir"></Directories>
|
||||
<Directories Name="UnitOutputDir"></Directories>
|
||||
<Directories Name="PackageDLLOutputDir"></Directories>
|
||||
<Directories Name="PackageDCPOutputDir"></Directories>
|
||||
<Directories Name="SearchPath"></Directories>
|
||||
<Directories Name="Packages"></Directories>
|
||||
<Directories Name="Conditionals"></Directories>
|
||||
<Directories Name="DebugSourceDirs"></Directories>
|
||||
<Directories Name="UsePackages">False</Directories>
|
||||
</Directories>
|
||||
<Parameters>
|
||||
<Parameters Name="RunParams"></Parameters>
|
||||
<Parameters Name="HostApplication"></Parameters>
|
||||
<Parameters Name="Launcher"></Parameters>
|
||||
<Parameters Name="UseLauncher">False</Parameters>
|
||||
<Parameters Name="DebugCWD"></Parameters>
|
||||
<Parameters Name="Debug Symbols Search Path"></Parameters>
|
||||
<Parameters Name="LoadAllSymbols">True</Parameters>
|
||||
<Parameters Name="LoadUnspecifiedSymbols">False</Parameters>
|
||||
</Parameters>
|
||||
<Language>
|
||||
<Language Name="ActiveLang"></Language>
|
||||
<Language Name="ProjectLang">$00000000</Language>
|
||||
<Language Name="RootDir"></Language>
|
||||
</Language>
|
||||
<VersionInfo>
|
||||
<VersionInfo Name="IncludeVerInfo">False</VersionInfo>
|
||||
<VersionInfo Name="AutoIncBuild">False</VersionInfo>
|
||||
<VersionInfo Name="MajorVer">1</VersionInfo>
|
||||
<VersionInfo Name="MinorVer">0</VersionInfo>
|
||||
<VersionInfo Name="Release">0</VersionInfo>
|
||||
<VersionInfo Name="Build">0</VersionInfo>
|
||||
<VersionInfo Name="Debug">False</VersionInfo>
|
||||
<VersionInfo Name="PreRelease">False</VersionInfo>
|
||||
<VersionInfo Name="Special">False</VersionInfo>
|
||||
<VersionInfo Name="Private">False</VersionInfo>
|
||||
<VersionInfo Name="DLL">False</VersionInfo>
|
||||
<VersionInfo Name="Locale">1041</VersionInfo>
|
||||
<VersionInfo Name="CodePage">932</VersionInfo>
|
||||
</VersionInfo>
|
||||
<VersionInfoKeys>
|
||||
<VersionInfoKeys Name="CompanyName"></VersionInfoKeys>
|
||||
<VersionInfoKeys Name="FileDescription"></VersionInfoKeys>
|
||||
<VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys>
|
||||
<VersionInfoKeys Name="InternalName"></VersionInfoKeys>
|
||||
<VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys>
|
||||
<VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys>
|
||||
<VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys>
|
||||
<VersionInfoKeys Name="ProductName"></VersionInfoKeys>
|
||||
<VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys>
|
||||
<VersionInfoKeys Name="Comments"></VersionInfoKeys>
|
||||
</VersionInfoKeys>
|
||||
</Delphi.Personality>
|
||||
</BorlandProject>
|
76
components/geckoport/version2/Components/GeckoComponents.dpk
Normal file
76
components/geckoport/version2/Components/GeckoComponents.dpk
Normal file
@ -0,0 +1,76 @@
|
||||
(* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla 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/MPL/
|
||||
*
|
||||
* 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 GeckoComponents for Delphi.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Takanori Ito.
|
||||
* Portions created by the Initial Developer are Copyright (C) 2003
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** *)
|
||||
package GeckoComponents;
|
||||
|
||||
{$R *.res}
|
||||
{$ALIGN 8}
|
||||
{$ASSERTIONS ON}
|
||||
{$BOOLEVAL OFF}
|
||||
{$DEBUGINFO ON}
|
||||
{$EXTENDEDSYNTAX ON}
|
||||
{$IMPORTEDDATA ON}
|
||||
{$IOCHECKS ON}
|
||||
{$LOCALSYMBOLS ON}
|
||||
{$LONGSTRINGS ON}
|
||||
{$OPENSTRINGS ON}
|
||||
{$OPTIMIZATION ON}
|
||||
{$OVERFLOWCHECKS OFF}
|
||||
{$RANGECHECKS OFF}
|
||||
{$REFERENCEINFO ON}
|
||||
{$SAFEDIVIDE OFF}
|
||||
{$STACKFRAMES OFF}
|
||||
{$TYPEDADDRESS ON}
|
||||
{$VARSTRINGCHECKS ON}
|
||||
{$WRITEABLECONST OFF}
|
||||
{$MINENUMSIZE 1}
|
||||
{$IMAGEBASE $400000}
|
||||
{$DESCRIPTION 'Gecko Components'}
|
||||
{$IMPLICITBUILD OFF}
|
||||
|
||||
requires
|
||||
rtl,
|
||||
vcl,
|
||||
GeckoSDK;
|
||||
|
||||
contains
|
||||
GeckoBrowser in 'GeckoBrowser.pas',
|
||||
BrowserSupports in 'BrowserSupports.pas',
|
||||
CallbackInterfaces in 'CallbackInterfaces.pas',
|
||||
GeckoChromeWindow in 'GeckoChromeWindow.pas' {GeckoChromeForm},
|
||||
GeckoSimpleProfile in 'GeckoSimpleProfile.pas',
|
||||
GeckoInit in 'GeckoInit.pas',
|
||||
GeckoDirectoryService in 'GeckoDirectoryService.pas';
|
||||
|
||||
end.
|
120
components/geckoport/version2/Components/GeckoComponents.dproj
Normal file
120
components/geckoport/version2/Components/GeckoComponents.dproj
Normal file
@ -0,0 +1,120 @@
|
||||
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<ProjectGuid>{4978B162-26BE-441E-B790-751148DC88CC}</ProjectGuid>
|
||||
<MainSource>GeckoComponents.dpk</MainSource>
|
||||
<Config Condition="'$(Config)'==''">デバッグ</Config>
|
||||
<DCC_DCCCompiler>DCC32</DCC_DCCCompiler>
|
||||
<ProjectVersion>12.0</ProjectVersion>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
|
||||
<Base>true</Base>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Config)'=='リリース' or '$(Cfg_1)'!=''">
|
||||
<Cfg_1>true</Cfg_1>
|
||||
<CfgParent>Base</CfgParent>
|
||||
<Base>true</Base>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Config)'=='デバッグ' or '$(Cfg_2)'!=''">
|
||||
<Cfg_2>true</Cfg_2>
|
||||
<CfgParent>Base</CfgParent>
|
||||
<Base>true</Base>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Base)'!=''">
|
||||
<DCC_ImageBase>00400000</DCC_ImageBase>
|
||||
<DCC_SymbolReferenceInfo>1</DCC_SymbolReferenceInfo>
|
||||
<GenPackage>true</GenPackage>
|
||||
<DCC_DependencyCheckOutputName>GeckoComponents.bpl</DCC_DependencyCheckOutputName>
|
||||
<DCC_TypedAtParameter>true</DCC_TypedAtParameter>
|
||||
<DCC_Platform>x86</DCC_Platform>
|
||||
<DCC_Description>Gecko Components</DCC_Description>
|
||||
<DCC_S>false</DCC_S>
|
||||
<DCC_OutputNeverBuildDcps>true</DCC_OutputNeverBuildDcps>
|
||||
<GenDll>true</GenDll>
|
||||
<DCC_N>false</DCC_N>
|
||||
<DCC_E>false</DCC_E>
|
||||
<DCC_F>false</DCC_F>
|
||||
<DCC_K>false</DCC_K>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Cfg_1)'!=''">
|
||||
<DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>
|
||||
<DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>
|
||||
<DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>
|
||||
<DCC_DebugInformation>false</DCC_DebugInformation>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Cfg_2)'!=''">
|
||||
<DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<DelphiCompile Include="GeckoComponents.dpk">
|
||||
<MainSource>MainSource</MainSource>
|
||||
</DelphiCompile>
|
||||
<DCCReference Include="rtl.dcp"/>
|
||||
<DCCReference Include="vcl.dcp"/>
|
||||
<DCCReference Include="GeckoSDK.dcp"/>
|
||||
<DCCReference Include="GeckoBrowser.pas"/>
|
||||
<DCCReference Include="BrowserSupports.pas"/>
|
||||
<DCCReference Include="CallbackInterfaces.pas"/>
|
||||
<DCCReference Include="GeckoChromeWindow.pas">
|
||||
<Form>GeckoChromeForm</Form>
|
||||
</DCCReference>
|
||||
<DCCReference Include="GeckoSimpleProfile.pas"/>
|
||||
<DCCReference Include="GeckoInit.pas"/>
|
||||
<DCCReference Include="GeckoDirectoryService.pas"/>
|
||||
<BuildConfiguration Include="Base">
|
||||
<Key>Base</Key>
|
||||
</BuildConfiguration>
|
||||
<BuildConfiguration Include="デバッグ">
|
||||
<Key>Cfg_2</Key>
|
||||
<CfgParent>Base</CfgParent>
|
||||
</BuildConfiguration>
|
||||
<BuildConfiguration Include="リリース">
|
||||
<Key>Cfg_1</Key>
|
||||
<CfgParent>Base</CfgParent>
|
||||
</BuildConfiguration>
|
||||
</ItemGroup>
|
||||
<Import Project="$(BDS)\Bin\CodeGear.Delphi.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Delphi.Targets')"/>
|
||||
<ProjectExtensions>
|
||||
<Borland.Personality>Delphi.Personality.12</Borland.Personality>
|
||||
<Borland.ProjectType>Package</Borland.ProjectType>
|
||||
<BorlandProject>
|
||||
<Delphi.Personality>
|
||||
<Source>
|
||||
<Source Name="MainSource">GeckoComponents.dpk</Source>
|
||||
</Source>
|
||||
<Parameters>
|
||||
<Parameters Name="UseLauncher">False</Parameters>
|
||||
<Parameters Name="LoadAllSymbols">True</Parameters>
|
||||
<Parameters Name="LoadUnspecifiedSymbols">False</Parameters>
|
||||
</Parameters>
|
||||
<VersionInfo>
|
||||
<VersionInfo Name="IncludeVerInfo">False</VersionInfo>
|
||||
<VersionInfo Name="AutoIncBuild">False</VersionInfo>
|
||||
<VersionInfo Name="MajorVer">1</VersionInfo>
|
||||
<VersionInfo Name="MinorVer">0</VersionInfo>
|
||||
<VersionInfo Name="Release">0</VersionInfo>
|
||||
<VersionInfo Name="Build">0</VersionInfo>
|
||||
<VersionInfo Name="Debug">False</VersionInfo>
|
||||
<VersionInfo Name="PreRelease">False</VersionInfo>
|
||||
<VersionInfo Name="Special">False</VersionInfo>
|
||||
<VersionInfo Name="Private">False</VersionInfo>
|
||||
<VersionInfo Name="DLL">False</VersionInfo>
|
||||
<VersionInfo Name="Locale">1041</VersionInfo>
|
||||
<VersionInfo Name="CodePage">932</VersionInfo>
|
||||
</VersionInfo>
|
||||
<VersionInfoKeys>
|
||||
<VersionInfoKeys Name="CompanyName"/>
|
||||
<VersionInfoKeys Name="FileDescription"/>
|
||||
<VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys>
|
||||
<VersionInfoKeys Name="InternalName"/>
|
||||
<VersionInfoKeys Name="LegalCopyright"/>
|
||||
<VersionInfoKeys Name="LegalTrademarks"/>
|
||||
<VersionInfoKeys Name="OriginalFilename"/>
|
||||
<VersionInfoKeys Name="ProductName"/>
|
||||
<VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys>
|
||||
<VersionInfoKeys Name="Comments"/>
|
||||
</VersionInfoKeys>
|
||||
</Delphi.Personality>
|
||||
</BorlandProject>
|
||||
<ProjectFileVersion>12</ProjectFileVersion>
|
||||
</ProjectExtensions>
|
||||
</Project>
|
150
components/geckoport/version2/Components/GeckoComponents.lpk
Executable file
150
components/geckoport/version2/Components/GeckoComponents.lpk
Executable file
@ -0,0 +1,150 @@
|
||||
<?xml version="1.0"?>
|
||||
<CONFIG>
|
||||
<Package Version="3">
|
||||
<Name Value="GeckoComponents"/>
|
||||
<AddToProjectUsesSection Value="False"/>
|
||||
<Author Value="Gecko Components for Delphi; ported to Lazarus by Phil Hess"/>
|
||||
<CompilerOptions>
|
||||
<Version Value="9"/>
|
||||
<SearchPaths>
|
||||
<OtherUnitFiles Value="..;../each-version"/>
|
||||
<UnitOutputDirectory Value="units/$(TargetCPU)-$(TargetOS)"/>
|
||||
</SearchPaths>
|
||||
<Parsing>
|
||||
<SyntaxOptions>
|
||||
<SyntaxMode Value="Delphi"/>
|
||||
<CStyleOperator Value="False"/>
|
||||
<IncludeAssertionCode Value="True"/>
|
||||
<AllowLabel Value="False"/>
|
||||
<CPPInline Value="False"/>
|
||||
</SyntaxOptions>
|
||||
</Parsing>
|
||||
<CodeGeneration>
|
||||
<Checks>
|
||||
<IOChecks Value="True"/>
|
||||
<RangeChecks Value="True"/>
|
||||
<OverflowChecks Value="True"/>
|
||||
<StackChecks Value="True"/>
|
||||
</Checks>
|
||||
<VerifyObjMethodCallValidity Value="True"/>
|
||||
</CodeGeneration>
|
||||
<Linking>
|
||||
<Debugging>
|
||||
<GenerateDebugInfo Value="True"/>
|
||||
<UseHeaptrc Value="True"/>
|
||||
</Debugging>
|
||||
</Linking>
|
||||
<Other>
|
||||
<WriteFPCLogo Value="False"/>
|
||||
<CompilerPath Value="$(CompPath)"/>
|
||||
</Other>
|
||||
</CompilerOptions>
|
||||
<Description Value="Gecko Components for Lazarus"/>
|
||||
<License Value="MPL 1.1"/>
|
||||
<Version Release="3"/>
|
||||
<Files Count="21">
|
||||
<Item1>
|
||||
<Filename Value="GeckoBrowser.pas"/>
|
||||
<HasRegisterProc Value="True"/>
|
||||
<UnitName Value="GeckoBrowser"/>
|
||||
</Item1>
|
||||
<Item2>
|
||||
<Filename Value="GeckoChromeWindow.lfm"/>
|
||||
<Type Value="LFM"/>
|
||||
</Item2>
|
||||
<Item3>
|
||||
<Filename Value="GeckoChromeWindow.lrs"/>
|
||||
<Type Value="LRS"/>
|
||||
</Item3>
|
||||
<Item4>
|
||||
<Filename Value="GeckoChromeWindow.pas"/>
|
||||
<UnitName Value="GeckoChromeWindow"/>
|
||||
</Item4>
|
||||
<Item5>
|
||||
<Filename Value="GeckoInit.pas"/>
|
||||
<UnitName Value="GeckoInit"/>
|
||||
</Item5>
|
||||
<Item6>
|
||||
<Filename Value="../nsCID.pas"/>
|
||||
<UnitName Value="nsCID"/>
|
||||
</Item6>
|
||||
<Item7>
|
||||
<Filename Value="../nsConsts.pas"/>
|
||||
<UnitName Value="nsConsts"/>
|
||||
</Item7>
|
||||
<Item8>
|
||||
<Filename Value="../nsEnumerators.pas"/>
|
||||
<UnitName Value="nsEnumerators"/>
|
||||
</Item8>
|
||||
<Item9>
|
||||
<Filename Value="../nsError.pas"/>
|
||||
<UnitName Value="nsError"/>
|
||||
</Item9>
|
||||
<Item10>
|
||||
<Filename Value="../nsErrorUtils.pas"/>
|
||||
<UnitName Value="nsErrorUtils"/>
|
||||
</Item10>
|
||||
<Item11>
|
||||
<Filename Value="../nsGeckoStrings.pas"/>
|
||||
<UnitName Value="nsGeckoStrings"/>
|
||||
</Item11>
|
||||
<Item12>
|
||||
<Filename Value="../nsInit.pas"/>
|
||||
<UnitName Value="nsInit"/>
|
||||
</Item12>
|
||||
<Item13>
|
||||
<Filename Value="../nsMemory.pas"/>
|
||||
<UnitName Value="nsMemory"/>
|
||||
</Item13>
|
||||
<Item14>
|
||||
<Filename Value="../nsNetUtil.pas"/>
|
||||
<UnitName Value="nsNetUtil"/>
|
||||
</Item14>
|
||||
<Item15>
|
||||
<Filename Value="../nsStream.pas"/>
|
||||
<UnitName Value="nsStream"/>
|
||||
</Item15>
|
||||
<Item16>
|
||||
<Filename Value="../nsTypes.pas"/>
|
||||
<UnitName Value="nsTypes"/>
|
||||
</Item16>
|
||||
<Item17>
|
||||
<Filename Value="../nsXPCOM.pas"/>
|
||||
<UnitName Value="nsXPCOM"/>
|
||||
</Item17>
|
||||
<Item18>
|
||||
<Filename Value="../nsXPCOMGlue.pas"/>
|
||||
<UnitName Value="nsXPCOMGlue"/>
|
||||
</Item18>
|
||||
<Item19>
|
||||
<Filename Value="../nsXRE.pas"/>
|
||||
<UnitName Value="nsXRE"/>
|
||||
</Item19>
|
||||
<Item20>
|
||||
<Filename Value="../each-version/nsXPCOM_std19.pas"/>
|
||||
<UnitName Value="nsXPCOM_std19"/>
|
||||
</Item20>
|
||||
<Item21>
|
||||
<Filename Value="GeckoPromptService.pas"/>
|
||||
<HasRegisterProc Value="True"/>
|
||||
<UnitName Value="GeckoPromptService"/>
|
||||
</Item21>
|
||||
</Files>
|
||||
<Type Value="RunAndDesignTime"/>
|
||||
<RequiredPkgs Count="2">
|
||||
<Item1>
|
||||
<PackageName Value="LCL"/>
|
||||
</Item1>
|
||||
<Item2>
|
||||
<PackageName Value="IDEIntf"/>
|
||||
</Item2>
|
||||
</RequiredPkgs>
|
||||
<UsageOptions>
|
||||
<UnitPath Value="$(PkgOutDir)/"/>
|
||||
</UsageOptions>
|
||||
<PublishOptions>
|
||||
<Version Value="2"/>
|
||||
<IgnoreBinaries Value="False"/>
|
||||
</PublishOptions>
|
||||
</Package>
|
||||
</CONFIG>
|
25
components/geckoport/version2/Components/GeckoComponents.pas
Executable file
25
components/geckoport/version2/Components/GeckoComponents.pas
Executable file
@ -0,0 +1,25 @@
|
||||
{ This file was automatically created by Lazarus. Do not edit!
|
||||
This source is only used to compile and install the package.
|
||||
}
|
||||
|
||||
unit GeckoComponents;
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
GeckoBrowser, GeckoChromeWindow, GeckoInit, nsCID, nsConsts,
|
||||
nsEnumerators, nsError, nsErrorUtils, nsGeckoStrings, nsInit, nsMemory,
|
||||
nsNetUtil, nsStream, nsTypes, nsXPCOM, nsXPCOMGlue, nsXRE, nsXPCOM_std19,
|
||||
GeckoPromptService, LazarusPackageIntf;
|
||||
|
||||
implementation
|
||||
|
||||
procedure Register;
|
||||
begin
|
||||
RegisterUnit('GeckoBrowser', @GeckoBrowser.Register);
|
||||
RegisterUnit('GeckoPromptService', @GeckoPromptService.Register);
|
||||
end;
|
||||
|
||||
initialization
|
||||
RegisterPackage('GeckoComponents', @Register);
|
||||
end.
|
85
components/geckoport/version2/Components/GeckoComponents.template
Executable file
85
components/geckoport/version2/Components/GeckoComponents.template
Executable file
@ -0,0 +1,85 @@
|
||||
<?xml version="1.0"?>
|
||||
<CONFIG>
|
||||
<Package Version="3">
|
||||
<Name Value="GeckoComponents"/>
|
||||
<AddToProjectUsesSection Value="False"/>
|
||||
<Author Value="Gecko Components for Delphi; ported to Lazarus by Phil Hess"/>
|
||||
<CompilerOptions>
|
||||
<Version Value="9"/>
|
||||
<SearchPaths>
|
||||
<UnitOutputDirectory Value="units/$(TargetCPU)-$(TargetOS)"/>
|
||||
</SearchPaths>
|
||||
<Parsing>
|
||||
<SyntaxOptions>
|
||||
<SyntaxMode Value="Delphi"/>
|
||||
<CStyleOperator Value="False"/>
|
||||
<IncludeAssertionCode Value="True"/>
|
||||
<AllowLabel Value="False"/>
|
||||
<CPPInline Value="False"/>
|
||||
<UseAnsiStrings Value="False"/>
|
||||
</SyntaxOptions>
|
||||
</Parsing>
|
||||
<CodeGeneration>
|
||||
<Checks>
|
||||
<IOChecks Value="True"/>
|
||||
<RangeChecks Value="True"/>
|
||||
<OverflowChecks Value="True"/>
|
||||
<StackChecks Value="True"/>
|
||||
</Checks>
|
||||
<VerifyObjMethodCallValidity Value="True"/>
|
||||
</CodeGeneration>
|
||||
<Linking>
|
||||
<Debugging>
|
||||
<GenerateDebugInfo Value="True"/>
|
||||
<UseHeaptrc Value="True"/>
|
||||
</Debugging>
|
||||
</Linking>
|
||||
<Other>
|
||||
<WriteFPCLogo Value="False"/>
|
||||
<CompilerPath Value="$(CompPath)"/>
|
||||
</Other>
|
||||
</CompilerOptions>
|
||||
<Description Value="Gecko Components for Lazarus"/>
|
||||
<License Value="MPL 1.1"/>
|
||||
<Version Release="3"/>
|
||||
<Files Count="5">
|
||||
<Item1>
|
||||
<Filename Value="GeckoBrowser.pas"/>
|
||||
<HasRegisterProc Value="True"/>
|
||||
<UnitName Value="GeckoBrowser"/>
|
||||
</Item1>
|
||||
<Item2>
|
||||
<Filename Value="GeckoChromeWindow.lfm"/>
|
||||
<Type Value="LFM"/>
|
||||
</Item2>
|
||||
<Item3>
|
||||
<Filename Value="GeckoChromeWindow.lrs"/>
|
||||
<Type Value="LRS"/>
|
||||
</Item3>
|
||||
<Item4>
|
||||
<Filename Value="GeckoChromeWindow.pas"/>
|
||||
<UnitName Value="GeckoChromeWindow"/>
|
||||
</Item4>
|
||||
<Item5>
|
||||
<Filename Value="GeckoInit.pas"/>
|
||||
<UnitName Value="GeckoInit"/>
|
||||
</Item5>
|
||||
</Files>
|
||||
<Type Value="RunAndDesignTime"/>
|
||||
<RequiredPkgs Count="2">
|
||||
<Item1>
|
||||
<PackageName Value="LCL"/>
|
||||
</Item1>
|
||||
<Item2>
|
||||
<PackageName Value="IDEIntf"/>
|
||||
</Item2>
|
||||
</RequiredPkgs>
|
||||
<UsageOptions>
|
||||
<UnitPath Value="$(PkgOutDir)"/>
|
||||
</UsageOptions>
|
||||
<PublishOptions>
|
||||
<Version Value="2"/>
|
||||
<IgnoreBinaries Value="False"/>
|
||||
</PublishOptions>
|
||||
</Package>
|
||||
</CONFIG>
|
@ -0,0 +1,302 @@
|
||||
unit GeckoDirectoryService;
|
||||
|
||||
{$MACRO on}
|
||||
|
||||
{$IFDEF Windows}
|
||||
{$DEFINE extdecl:=stdcall}
|
||||
{$ELSE Windows}
|
||||
{$DEFINE extdecl:=cdecl}
|
||||
{$ENDIF}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
SysUtils, Classes, nsXPCOM;
|
||||
|
||||
type
|
||||
TGeckoDirectoryServiceOnGetFile = function (
|
||||
const AProp: AnsiString): String of object;
|
||||
TGeckoDirectoryServiceOnGetFileList = function (
|
||||
const AProp: AnsiString; AList: TStrings): Boolean of Object;
|
||||
|
||||
TCustomDirectoryServiceProvider = class(TComponent)
|
||||
private
|
||||
{ Private declarations }
|
||||
FOnGetFile: TGeckoDirectoryServiceOnGetFile;
|
||||
FOnGetFileList: TGeckoDirectoryServiceOnGetFileList;
|
||||
FProxy: nsIDirectoryServiceProvider;
|
||||
|
||||
function ProcessGetFile(const AProp: AnsiString; var APersistent: Boolean)
|
||||
: String;
|
||||
function ProcessGetFileList(const AProp: AnsiString;
|
||||
AFileList: TStrings): Boolean;
|
||||
property OnGetFile: TGeckoDirectoryServiceOnGetFile read FOnGetFile
|
||||
write FOnGetFile;
|
||||
property OnGetFileList: TGeckoDirectoryServiceOnGetFileList
|
||||
read FOnGetFileList write FOnGetFileList;
|
||||
protected
|
||||
{ Protected declarations }
|
||||
public
|
||||
{ Public declarations }
|
||||
constructor Create(AOwner: TComponent); override;
|
||||
destructor Destroy; override;
|
||||
published
|
||||
{ Published declarations }
|
||||
end;
|
||||
|
||||
TGeckoDirectoryServiceProvider = class(TCustomDirectoryServiceProvider)
|
||||
private
|
||||
{ Private declarations }
|
||||
FRegDir: AnsiString;
|
||||
FRegFile: AnsiString;
|
||||
FDefaultsDir: AnsiString;
|
||||
FPrefDefaultsDir: AnsiString;
|
||||
FProfileDefaultsDir: AnsiString;
|
||||
FProfileDefaultsNlocDir: AnsiString;
|
||||
|
||||
protected
|
||||
{ Protected declarations }
|
||||
public
|
||||
{ Public declarations }
|
||||
published
|
||||
{ Published declarations }
|
||||
property OnGetFile;
|
||||
end;
|
||||
|
||||
procedure Register;
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
nsTypes, nsInit, nsError, nsGeckoStrings, nsXPCOMGlue, nsCID, GeckoInit,
|
||||
nsXPCOM_std19, nsEnumerators, Windows;
|
||||
|
||||
type
|
||||
TDirectoryServiceProviderProxy = class(TInterfacedObject,
|
||||
nsIDirectoryServiceProvider_std19,
|
||||
nsIDirectoryServiceProvider2_std19)
|
||||
FOwner: TCustomDirectoryServiceProvider;
|
||||
constructor Create(AOwner: TCustomDirectoryServiceProvider);
|
||||
function GetFile(const prop: PAnsiChar; out persistent: PRBool;
|
||||
out _retval: nsIFile_std19): nsresult; extdecl;
|
||||
function GetFiles(const prop: PAnsiChar;
|
||||
out _retval: nsISimpleEnumerator_std19): nsresult; extdecl;
|
||||
end;
|
||||
|
||||
procedure Register;
|
||||
begin
|
||||
RegisterComponents('Gecko', [TGeckoDirectoryServiceProvider]);
|
||||
end;
|
||||
|
||||
constructor TDirectoryServiceProviderProxy.Create(
|
||||
AOwner: TCustomDirectoryServiceProvider);
|
||||
begin
|
||||
inherited Create;
|
||||
FOwner := AOwner;
|
||||
end;
|
||||
|
||||
var
|
||||
sModulePath: array[0..MAX_PATH] of Char;
|
||||
sModulePathInitialized: Boolean = False;
|
||||
|
||||
function GetModulePath: String;
|
||||
begin
|
||||
if not sModulePathInitialized then
|
||||
begin
|
||||
GetModuleFileName(0, sModulePath, MAX_PATH);
|
||||
sModulePathInitialized := True;
|
||||
end;
|
||||
Result := PChar(@sModulePath);
|
||||
end;
|
||||
|
||||
function MakeILocalFile(const AFilename: String;
|
||||
out ALocalFile: nsILocalFile): nsresult;
|
||||
var
|
||||
localFile: nsILocalFile;
|
||||
{$ifndef UNICODE}
|
||||
localFileStr: IInterfacedCString;
|
||||
{$else}
|
||||
localFileStr: IInterfacedString;
|
||||
{$endif}
|
||||
modulePath: String;
|
||||
targetPath, relativePath: String;
|
||||
begin
|
||||
modulePath := GetModulePath;
|
||||
|
||||
if (Length(AFilename)>0) and
|
||||
(AFilename[1] = '\') then
|
||||
begin
|
||||
// case of Path from root or network path
|
||||
if (Length(afilename)>=2) and
|
||||
(afilename[2] <> '\') then
|
||||
begin
|
||||
// case of Path from root
|
||||
targetPath := ExtractFileDrive(modulePath) + afilename;
|
||||
end else
|
||||
begin
|
||||
// case of network path
|
||||
targetPath := afilename;
|
||||
end;
|
||||
end else
|
||||
if (Length(afilename)<3) or
|
||||
(afilename[2] <> ':') then
|
||||
begin
|
||||
// case of relative path
|
||||
targetPath := ExtractFileDir(modulePath);
|
||||
if Length(afilename)>0 then
|
||||
relativePath := afilename;
|
||||
end else
|
||||
begin
|
||||
// case of full path
|
||||
targetPath := afilename;
|
||||
end;
|
||||
|
||||
try
|
||||
{$ifndef UNICODE}
|
||||
localFileStr := NewCString(targetPath);
|
||||
{$else}
|
||||
localFileStr := NewString(targetPath);
|
||||
{$endif}
|
||||
except
|
||||
Result := NS_ERROR_FAILURE;
|
||||
Exit;
|
||||
end;
|
||||
{$ifndef UNICODE}
|
||||
Result := NS_NewNativeLocalFile(localFileStr.ACString, True, localFile);
|
||||
{$else}
|
||||
Result := NS_NewLocalFile(localFileStr.AString, True, localFile);
|
||||
{$endif}
|
||||
if NS_FAILED(Result) then Exit;
|
||||
|
||||
if Length(relativePath)>0 then
|
||||
begin
|
||||
localFileStr.Assign(relativePath);
|
||||
{$ifndef UNICODE}
|
||||
localFile.AppendRelativeNativePath(localFileStr.ACString);
|
||||
{$else}
|
||||
localFile.AppendRelativePath(localFileStr.AString);
|
||||
{$endif}
|
||||
end;
|
||||
|
||||
Result := localFile.QueryInterface(nsILocalFile, ALocalFile);
|
||||
end;
|
||||
|
||||
function TDirectoryServiceProviderProxy.GetFile(const prop: PAnsiChar;
|
||||
out persistent: PRBool; out _retval: nsIFile_std19): nsresult;
|
||||
var
|
||||
path: String;
|
||||
localFile: nsILocalFile;
|
||||
persist: Boolean;
|
||||
begin
|
||||
if Assigned(FOwner) then
|
||||
begin
|
||||
path := FOwner.ProcessGetFile(prop, persist);
|
||||
if (Length(path)=0) and Assigned(FOwner.FOnGetFile) then
|
||||
begin
|
||||
path := FOwner.FOnGetFile(prop);
|
||||
end;
|
||||
end;
|
||||
|
||||
if Length(path)=0 then
|
||||
begin
|
||||
Result := NS_ERROR_FAILURE;
|
||||
end else
|
||||
begin
|
||||
Result := MakeILocalFile(path, localFile);
|
||||
if NS_SUCCEEDED(Result) then
|
||||
begin
|
||||
Result := localFile.QueryInterface(nsIFile_std19, _retval);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
function TDirectoryServiceProviderProxy.GetFiles(const prop: PAnsiChar;
|
||||
out _retval: nsISimpleEnumerator_std19): nsresult;
|
||||
var
|
||||
enum: nsISimpleEnumerator;
|
||||
lfile: nsILocalFile;
|
||||
done: Boolean;
|
||||
list: TStringList;
|
||||
intfList: TInterfaceList;
|
||||
i: Integer;
|
||||
begin
|
||||
list := TStringList.Create;
|
||||
try
|
||||
intfList := TInterfaceList.Create;
|
||||
try
|
||||
enum := NewSimpleEnumeratorFromTInterfaceList(intfList, True);
|
||||
except
|
||||
Result := NS_ERROR_FAILURE;
|
||||
intfList.Free;
|
||||
Exit;
|
||||
end;
|
||||
|
||||
if Assigned(FOwner) then
|
||||
begin
|
||||
Done := FOwner.ProcessGetFileList(prop, list);
|
||||
if not Done then
|
||||
begin
|
||||
Result := NS_ERROR_FAILURE;
|
||||
Exit;
|
||||
end;
|
||||
for i:=0 to list.Count -1 do
|
||||
begin
|
||||
Result := MakeILocalFile(list[i], lfile);
|
||||
if NS_FAILED(Result) then
|
||||
Exit;
|
||||
intfList.Add(lfile);
|
||||
end;
|
||||
Result := enum.QueryInterface(nsISimpleEnumerator, _retval);
|
||||
end else
|
||||
begin
|
||||
Result := NS_ERROR_FAILURE;
|
||||
end;
|
||||
finally
|
||||
list.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
constructor TCustomDirectoryServiceProvider.Create(AOwner: TComponent);
|
||||
var
|
||||
dirSrv: nsIDirectoryService;
|
||||
begin
|
||||
inherited;
|
||||
|
||||
if not (csDesigning in ComponentState) then
|
||||
begin
|
||||
GeckoComponentsStartup;
|
||||
|
||||
FProxy := TDirectoryServiceProviderProxy.Create(Self)
|
||||
as nsIDirectoryServiceProvider;
|
||||
NS_GetService(NS_DIRECTORY_SERVICE_CONTRACTID, nsIDirectoryService, dirSrv);
|
||||
dirSrv.RegisterProvider(FProxy);
|
||||
end;
|
||||
end;
|
||||
|
||||
destructor TCustomDirectoryServiceProvider.Destroy;
|
||||
var
|
||||
dirSrv: nsIDirectoryService;
|
||||
begin
|
||||
if not (csDesigning in ComponentState) then
|
||||
begin
|
||||
NS_GetService(NS_DIRECTORY_SERVICE_CONTRACTID, nsIDirectoryService, dirSrv);
|
||||
dirSrv.UnregisterProvider(FProxy);
|
||||
|
||||
GeckoComponentsShutdown;
|
||||
end;
|
||||
|
||||
inherited;
|
||||
end;
|
||||
|
||||
function TCustomDirectoryServiceProvider.ProcessGetFile(const AProp: AnsiString;
|
||||
var APersistent: Boolean): String;
|
||||
begin
|
||||
end;
|
||||
|
||||
function TCustomDirectoryServiceProvider.ProcessGetFileList(
|
||||
const AProp: AnsiString; AFileList: TStrings): Boolean;
|
||||
begin
|
||||
Result := False;
|
||||
end;
|
||||
|
||||
end.
|
72
components/geckoport/version2/Components/GeckoInit.pas
Normal file
72
components/geckoport/version2/Components/GeckoInit.pas
Normal file
@ -0,0 +1,72 @@
|
||||
unit GeckoInit;
|
||||
|
||||
interface
|
||||
|
||||
procedure GeckoComponentsStartup(XPComPath: string = '');
|
||||
procedure GeckoComponentsShutdown;
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
nsXPCOM, nsInit, nsTypes, nsErrorUtils, nsError,
|
||||
nsXPCOMGlue, nsXRE {$IFDEF MSWINDOWS}, Windows {$ENDIF};
|
||||
|
||||
var
|
||||
sInitCount: Integer = 0;
|
||||
|
||||
procedure GeckoComponentsStartup(XPComPath: string = '');
|
||||
const
|
||||
NS_DIRECTORY_SERVICE_CID: TGUID = '{f00152d0-b40b-11d3-8c9c-000064657374}';
|
||||
var
|
||||
rv: nsresult;
|
||||
errorStr: AnsiString;
|
||||
ServiceManager: nsIServiceManager;
|
||||
DirectoryService: nsIDirectoryService;
|
||||
begin
|
||||
if sInitCount>0 then
|
||||
begin
|
||||
Inc(sInitCount);
|
||||
Exit;
|
||||
end;
|
||||
|
||||
rv := XRE_Startup('1.9', True, '2.0', False, XPComPath);
|
||||
|
||||
if NS_FAILED(rv) then
|
||||
begin
|
||||
errorStr := NS_GetErrorStringBundleKey(rv);
|
||||
XPCOMGlueShutdown;
|
||||
raise EGeckoError.Create(string(errorStr));
|
||||
end;
|
||||
|
||||
//Register the service via Service Manager.
|
||||
if not Assigned(GeckoEngineDirectoryService) then
|
||||
GeckoEngineDirectoryService:=IDirectoryServiceProvider.Create;
|
||||
NS_GetServiceManager(ServiceManager);
|
||||
ServiceManager.GetService(NS_DIRECTORY_SERVICE_CID, DirectoryService,DirectoryService);
|
||||
{$IFDEF LCLGTK2 AND defined(cpux86_64)}
|
||||
//No register meanwhile the DirectoryService bug in Linux64 is not solved.
|
||||
{$ELSE}
|
||||
DirectoryService.RegisterProvider(GeckoEngineDirectoryService);
|
||||
{$ENDIF}
|
||||
|
||||
Inc(sInitCount);
|
||||
end;
|
||||
|
||||
procedure GeckoComponentsShutdown();
|
||||
begin
|
||||
if sInitCount = 0 then
|
||||
begin
|
||||
raise EGeckoError.Create(
|
||||
'ERROR: Too many calls for GeckoComponentsShutdown then GeckoComponentsStartup');
|
||||
end;
|
||||
|
||||
Dec(sInitCount);
|
||||
|
||||
if sInitCount = 0 then
|
||||
begin
|
||||
XRE_Shutdown();
|
||||
end;
|
||||
end;
|
||||
|
||||
end.
|
||||
|
359
components/geckoport/version2/Components/GeckoPromptService.pas
Normal file
359
components/geckoport/version2/Components/GeckoPromptService.pas
Normal file
@ -0,0 +1,359 @@
|
||||
unit GeckoPromptService;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, nsXPCOM, nsTypes;
|
||||
|
||||
const
|
||||
NS_PROMPT_SERVICE_CID: TGUID = '{a2112d6a-0e28-421f-b46a-25c0b308cbd0}';
|
||||
|
||||
type
|
||||
TGeckoPromptAlert=procedure(Sender: TObject; const aDialogTitle: UTF8String; const aText: UTF8String) of object;
|
||||
TGeckoPromptAlertCheck=procedure (Sender: TObject; const aDialogTitle: UTF8String; const aText: UTF8String; const aCheckMsg: UTF8String; out aCheckState: Boolean) of object;
|
||||
TGeckoPromptConfirm=procedure(Sender: TObject; const aDialogTitle: UTF8String; const aText: UTF8String; var aCancel: Boolean) of object;
|
||||
TGeckoPromptConfirmCheck=procedure(Sender: TObject; const aDialogTitle: UTF8String; const aText: UTF8String; const aCheckMsg: UTF8String; out aCheckState: Boolean; var aCancel: Boolean) of object;
|
||||
TGeckoPromptConfirmEx=procedure(Sender: TObject; const aDialogTitle: UTF8String; const aText: UTF8String; aButtonFlags: Cardinal; const aButton0Title: UTF8String; const aButton1Title: UTF8String; const aButton2Title: UTF8String; const aCheckMsg: UTF8String; out aCheckState: Boolean; out aSelectedButton) of object;
|
||||
TGeckoPromptPrompt=procedure(Sender: TObject; const aDialogTitle: UTF8String; const aText: UTF8String; var aValue: UTF8String; const aCheckMsg: UTF8String; var aCheckState: Boolean; var aCancel: Boolean) of object;
|
||||
TGeckoPromptPromptUsernameAndPassword=procedure(Sender: TObject; const aDialogTitle: UTF8String; const aText: UTF8String; out aUsername: UTF8String; out aPassword: UTF8String; const aCheckMsg: UTF8String; out aCheckState: Boolean; var aCancel: Boolean) of object;
|
||||
TGeckoPromptPromptPassword=procedure(Sender: TObject; const aDialogTitle: UTF8String; const aText: UTF8String; out aPassword: UTF8String; const aCheckMsg: UTF8String; out aCheckState: Boolean; var aCancel: Boolean) of object;
|
||||
TGeckoPromptSelect=procedure(Sender: TObject; const aDialogTitle: UTF8String; const aText: UTF8String; aCount: Cardinal; const aSelectList_array; out aOutSelection: integer; var aCancel: Boolean) of object;
|
||||
TGeckoPromptPromptAuth=procedure(Sender: TObject;const aChannel: nsIChannel;const level: integer;const authInfo: nsIAuthInformation;const checkboxLabel: UTF8String;var checkValue: Boolean; var aRetryOnFail: Boolean) of object;
|
||||
TGeckoPromptAsyncPromptAuth=procedure(Sender: TObject;aChannel: nsIChannel;aCallback: nsIAuthPromptCallback;aContext: nsISupports;level: Cardinal;authInfo: nsIAuthInformation;checkboxLabel: UTF8String;var checkValue: Boolean; var nsICancelable) of object;
|
||||
TGeckoPromptPromptAuthSimple=procedure(Sender: TObject;var aUserName,aPassword: UTF8String;const aCheckBoxText,aRealm: UTF8String;var aCheckValue: Boolean; var aRetryOnFail: Boolean) of object;
|
||||
|
||||
{ IPromptService }
|
||||
|
||||
IPromptService = class (TInterfacedObject,
|
||||
nsIPromptService,
|
||||
nsIPromptService2)
|
||||
private
|
||||
public
|
||||
//nsIPromptService
|
||||
procedure Alert(aParent: nsIDOMWindow; const aDialogTitle: PWideChar; const aText: PWideChar); safecall;
|
||||
procedure AlertCheck(aParent: nsIDOMWindow; const aDialogTitle: PWideChar; const aText: PWideChar; const aCheckMsg: PWideChar; out aCheckState: PRBool); safecall;
|
||||
function Confirm(aParent: nsIDOMWindow; const aDialogTitle: PWideChar; const aText: PWideChar): PRBool; safecall;
|
||||
function ConfirmCheck(aParent: nsIDOMWindow; const aDialogTitle: PWideChar; const aText: PWideChar; const aCheckMsg: PWideChar; out aCheckState: PRBool): PRBool; safecall;
|
||||
function ConfirmEx(aParent: nsIDOMWindow; const aDialogTitle: PWideChar; const aText: PWideChar; aButtonFlags: PRUint32; const aButton0Title: PWideChar; const aButton1Title: PWideChar; const aButton2Title: PWideChar; const aCheckMsg: PWideChar; out aCheckState: PRBool): PRInt32; safecall;
|
||||
function Prompt(aParent: nsIDOMWindow; const aDialogTitle: PWideChar; const aText: PWideChar; var aValue: PWideChar; const aCheckMsg: PWideChar; var aCheckState: PRBool): PRBool; safecall;
|
||||
function PromptUsernameAndPassword(aParent: nsIDOMWindow; const aDialogTitle: PWideChar; const aText: PWideChar; out aUsername: PWideChar; out aPassword: PWideChar; const aCheckMsg: PWideChar; out aCheckState: PRBool): PRBool; safecall;
|
||||
function PromptPassword(aParent: nsIDOMWindow; const aDialogTitle: PWideChar; const aText: PWideChar; out aPassword: PWideChar; const aCheckMsg: PWideChar; out aCheckState: PRBool): PRBool; safecall;
|
||||
function Select(aParent: nsIDOMWindow; const aDialogTitle: PWideChar; const aText: PWideChar; aCount: PRUint32; const aSelectList_array; out aOutSelection: PRInt32): PRBool; safecall;
|
||||
//nsIPromptService2
|
||||
function PromptAuth(aParent: nsIDOMWindow; aChannel: nsIChannel; level: PRUint32; authInfo: nsIAuthInformation; const checkboxLabel: PWideChar; var checkValue: LongBool): LongBool; safecall;
|
||||
function AsyncPromptAuth(aParent: nsIDOMWindow; aChannel: nsIChannel; aCallback: nsIAuthPromptCallback; aContext: nsISupports; level: PRUint32; authInfo: nsIAuthInformation; const checkboxLabel: PWideChar; var checkValue: LongBool): nsICancelable; safecall;
|
||||
end;
|
||||
|
||||
{ IPromptServiceFactory }
|
||||
|
||||
IPromptServiceFactory = class(TInterfacedObject,nsIFactory)
|
||||
procedure CreateInstance(aOuter: nsISupports; constref iid: TGUID; out _result); safecall;
|
||||
procedure LockFactory(lock: PRBool); safecall;
|
||||
end;
|
||||
|
||||
TCustomGeckoPrompt=class(TComponent)
|
||||
private
|
||||
protected
|
||||
FOnAlert: TGeckoPromptAlert;
|
||||
FOnAlertCheck: TGeckoPromptAlertCheck;
|
||||
FOnConfirm: TGeckoPromptConfirm;
|
||||
FOnConfirmCheck: TGeckoPromptConfirmCheck;
|
||||
FOnConfirmEx: TGeckoPromptConfirmEx;
|
||||
FOnPrompt: TGeckoPromptPrompt;
|
||||
FOnPromptUsernameAndPassword: TGeckoPromptPromptUsernameAndPassword;
|
||||
FOnPromptPassword: TGeckoPromptPromptPassword;
|
||||
FOnSelect: TGeckoPromptSelect;
|
||||
FOnPromptAuth: TGeckoPromptPromptAuth;
|
||||
FOnAsyncPromptAuth: TGeckoPromptAsyncPromptAuth;
|
||||
FOnPromptAuthSimple: TGeckoPromptPromptAuthSimple;
|
||||
public
|
||||
property Alert: TGeckoPromptAlert
|
||||
read FOnAlert write FOnAlert;
|
||||
property AlertCheck: TGeckoPromptAlertCheck
|
||||
read FOnAlertCheck write FOnAlertCheck;
|
||||
property Confirm: TGeckoPromptConfirm
|
||||
read FOnConfirm write FOnConfirm;
|
||||
property ConfirmCheck: TGeckoPromptConfirmCheck
|
||||
read FOnConfirmCheck write FOnConfirmCheck;
|
||||
property ConfirmEx: TGeckoPromptConfirmEx
|
||||
read FOnConfirmEx write FOnConfirmEx;
|
||||
property Prompt: TGeckoPromptPrompt
|
||||
read FOnPrompt write FOnPrompt;
|
||||
property PromptUsernameAndPassword: TGeckoPromptPromptUsernameAndPassword
|
||||
read FOnPromptUsernameAndPassword write FOnPromptUsernameAndPassword;
|
||||
property PromptPassword: TGeckoPromptPromptPassword
|
||||
read FOnPromptPassword write FOnPromptPassword;
|
||||
property Select: TGeckoPromptSelect
|
||||
read FOnSelect write FOnSelect;
|
||||
property PromptAuth: TGeckoPromptPromptAuth
|
||||
read FOnPromptAuth write FOnPromptAuth;
|
||||
property AsyncPromptAuth: TGeckoPromptAsyncPromptAuth
|
||||
read FOnAsyncPromptAuth write FOnAsyncPromptAuth;
|
||||
property PromptAuthSimple: TGeckoPromptPromptAuthSimple
|
||||
read FOnPromptAuthSimple write FOnPromptAuthSimple;
|
||||
end;
|
||||
|
||||
TGeckoPrompt=class(TCustomGeckoPrompt)
|
||||
private
|
||||
protected
|
||||
public
|
||||
published
|
||||
property Alert;
|
||||
property AlertCheck;
|
||||
property Confirm;
|
||||
property ConfirmCheck;
|
||||
property ConfirmEx;
|
||||
property Prompt;
|
||||
property PromptUsernameAndPassword;
|
||||
property PromptPassword;
|
||||
property Select;
|
||||
property PromptAuth;
|
||||
property AsyncPromptAuth;
|
||||
property PromptAuthSimple;
|
||||
end;
|
||||
|
||||
procedure RegisterPromptService;
|
||||
|
||||
procedure Register;
|
||||
|
||||
implementation
|
||||
|
||||
uses nsInit,nsGeckoStrings,GeckoBrowser,nsMemory;
|
||||
|
||||
var
|
||||
GeckoPromptServiceFactory: IPromptServiceFactory;
|
||||
ThisGeckoPromptService: IPromptService;
|
||||
|
||||
procedure Register;
|
||||
begin
|
||||
RegisterComponents('Gecko', [TGeckoPrompt]);
|
||||
end;
|
||||
|
||||
function UnImplemented: Boolean;
|
||||
begin
|
||||
(*
|
||||
This warning only appears when used in the Lazarus IDE.
|
||||
Otherwise the exception is eaten by the try...except and
|
||||
default behavior is executed.
|
||||
*)
|
||||
try
|
||||
Raise exception.Create('GeckoPort unimplemented feature in TGeckoPrompt. Please report at http://sourceforge.net/projects/lazarus-ccr/ or at http://forum.lazarus.freepascal.org/');
|
||||
except
|
||||
end;
|
||||
Result:=false;
|
||||
end;
|
||||
|
||||
procedure nsParamStringUpdate(var pwParamString: PWideChar; const aNewString: UTF8String);
|
||||
var
|
||||
wNewString: WideString;
|
||||
BufferSize: SizeInt;
|
||||
begin
|
||||
if Assigned(pwParamString) then begin
|
||||
nsMemory.Free(pwParamString);
|
||||
pwParamString:=nil;
|
||||
end;
|
||||
if Length(aNewString)>0 then begin
|
||||
wNewString:=UTF8Decode(aNewString);
|
||||
BufferSize:=(Length(wNewString)+1)*sizeof(wNewString[1]); //chars + 1 NULL
|
||||
pwParamString:=nsMemory.Alloc(BufferSize);
|
||||
move(wNewString[1],pwParamString^,BufferSize);
|
||||
end;
|
||||
end;
|
||||
|
||||
function FindAssociatedPromptService(const aParent: nsIDOMWindow; out AGecko: TGeckoBrowser): TGeckoPrompt;
|
||||
var
|
||||
Gecko: TGeckoBrowser;
|
||||
begin
|
||||
Gecko:=TGeckoBrowser.GetGeckoBrowserWithDOMWindow(aParent);
|
||||
if Assigned(Gecko) then begin
|
||||
Result:=Gecko.Prompt;
|
||||
AGecko:=Gecko;
|
||||
end else begin
|
||||
Result:=nil;
|
||||
AGecko:=nil;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure RegisterPromptService;
|
||||
var
|
||||
PromptService: nsIPromptService;
|
||||
ComponentRegistrar: nsIComponentRegistrar;
|
||||
begin
|
||||
if not Assigned(GeckoPromptServiceFactory) then begin
|
||||
NS_GetComponentRegistrar(ComponentRegistrar);
|
||||
GeckoPromptServiceFactory:=IPromptServiceFactory.Create;
|
||||
ComponentRegistrar.RegisterFactory(NS_PROMPT_SERVICE_CID,'Prompt Service',nil,GeckoPromptServiceFactory);
|
||||
end;
|
||||
end;
|
||||
|
||||
{ IPromptService }
|
||||
|
||||
procedure IPromptService.Alert(aParent: nsIDOMWindow;
|
||||
const aDialogTitle: PWideChar; const aText: PWideChar); safecall;
|
||||
begin
|
||||
Unimplemented;
|
||||
end;
|
||||
|
||||
procedure IPromptService.AlertCheck(aParent: nsIDOMWindow;
|
||||
const aDialogTitle: PWideChar; const aText: PWideChar;
|
||||
const aCheckMsg: PWideChar; out aCheckState: PRBool); safecall;
|
||||
begin
|
||||
Unimplemented;
|
||||
end;
|
||||
|
||||
function IPromptService.Confirm(aParent: nsIDOMWindow;
|
||||
const aDialogTitle: PWideChar; const aText: PWideChar): PRBool; safecall;
|
||||
begin
|
||||
Result:=Unimplemented;
|
||||
end;
|
||||
|
||||
function IPromptService.ConfirmCheck(aParent: nsIDOMWindow;
|
||||
const aDialogTitle: PWideChar; const aText: PWideChar;
|
||||
const aCheckMsg: PWideChar; out aCheckState: PRBool): PRBool; safecall;
|
||||
begin
|
||||
Result:=Unimplemented;
|
||||
end;
|
||||
|
||||
function IPromptService.ConfirmEx(aParent: nsIDOMWindow;
|
||||
const aDialogTitle: PWideChar; const aText: PWideChar;
|
||||
aButtonFlags: PRUint32; const aButton0Title: PWideChar;
|
||||
const aButton1Title: PWideChar; const aButton2Title: PWideChar;
|
||||
const aCheckMsg: PWideChar; out aCheckState: PRBool): PRInt32; safecall;
|
||||
begin
|
||||
UnImplemented;
|
||||
Result:=0;
|
||||
end;
|
||||
|
||||
function IPromptService.Prompt(aParent: nsIDOMWindow;
|
||||
const aDialogTitle: PWideChar; const aText: PWideChar; var aValue: PWideChar;
|
||||
const aCheckMsg: PWideChar; var aCheckState: PRBool): PRBool; safecall;
|
||||
var
|
||||
ThePrompt: TGeckoPrompt;
|
||||
Gecko: TGeckoBrowser;
|
||||
TheValue: UTF8String;
|
||||
Cancel: Boolean;
|
||||
CheckState: Boolean;
|
||||
begin
|
||||
Result:=false;
|
||||
ThePrompt:=FindAssociatedPromptService(aParent,Gecko);
|
||||
if Assigned(ThePrompt) then begin
|
||||
if Assigned(ThePrompt.FOnPrompt) then begin
|
||||
TheValue:=UTF8Encode(WideString(aValue));
|
||||
CheckState:=aCheckState;
|
||||
Cancel:=false;
|
||||
ThePrompt.FOnPrompt(Gecko,
|
||||
UTF8Encode(WideString(aDialogTitle)),
|
||||
UTF8Encode(WideString(aText)),
|
||||
TheValue,
|
||||
UTF8Encode(WideString(aCheckMsg)),
|
||||
CheckState,
|
||||
Cancel);
|
||||
Result:=not Cancel;
|
||||
if Result then begin
|
||||
nsParamStringUpdate(aValue,TheValue);
|
||||
aCheckState:=CheckState;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
function IPromptService.PromptUsernameAndPassword(aParent: nsIDOMWindow;
|
||||
const aDialogTitle: PWideChar; const aText: PWideChar; out
|
||||
aUsername: PWideChar; out aPassword: PWideChar; const aCheckMsg: PWideChar;
|
||||
out aCheckState: PRBool): PRBool; safecall;
|
||||
begin
|
||||
Result:=Unimplemented;
|
||||
end;
|
||||
|
||||
function IPromptService.PromptPassword(aParent: nsIDOMWindow;
|
||||
const aDialogTitle: PWideChar; const aText: PWideChar; out
|
||||
aPassword: PWideChar; const aCheckMsg: PWideChar; out aCheckState: PRBool
|
||||
): PRBool; safecall;
|
||||
begin
|
||||
Result:=Unimplemented;
|
||||
end;
|
||||
|
||||
function IPromptService.Select(aParent: nsIDOMWindow;
|
||||
const aDialogTitle: PWideChar; const aText: PWideChar; aCount: PRUint32;
|
||||
const aSelectList_array; out aOutSelection: PRInt32): PRBool; safecall;
|
||||
begin
|
||||
Result:=Unimplemented;
|
||||
end;
|
||||
|
||||
function IPromptService.PromptAuth(aParent: nsIDOMWindow; aChannel: nsIChannel;
|
||||
level: PRUint32; authInfo: nsIAuthInformation;
|
||||
const checkboxLabel: PWideChar; var checkValue: LongBool): LongBool; safecall;
|
||||
var
|
||||
ThePrompt: TGeckoPrompt;
|
||||
Gecko: TGeckoBrowser;
|
||||
RetryOnFail: Boolean;
|
||||
UserName, Password,
|
||||
Realm: IInterfacedString;
|
||||
CheckBoxValue: Boolean;
|
||||
pUserName,pPassword: UTF8String;
|
||||
Flags: PRUint32;
|
||||
begin
|
||||
Result:=false;
|
||||
ThePrompt:=FindAssociatedPromptService(aParent,Gecko);
|
||||
if Assigned(ThePrompt) then begin
|
||||
if Assigned(ThePrompt.FOnPromptAuth) then begin
|
||||
//Full Auth mode
|
||||
RetryOnFail:=false;
|
||||
CheckBoxValue:=checkValue;
|
||||
ThePrompt.FOnPromptAuth(Gecko,aChannel,Level,authInfo,UTF8Encode(WideString(checkboxLabel)),CheckBoxValue,RetryOnFail);
|
||||
checkValue:=CheckBoxValue;
|
||||
Result:=RetryOnFail;
|
||||
end else if Assigned(ThePrompt.FOnPromptAuthSimple) then begin
|
||||
//Simple Auth mode only for host, proxy and others must be handled by OnPromptAuth
|
||||
authInfo.GetFlags(Flags);
|
||||
if (Flags and not(NS_IAUTHINFORMATION_AUTH_HOST))=0 then begin
|
||||
UserName:=NewString;
|
||||
Password:=NewString;
|
||||
Realm:=NewString;
|
||||
authInfo.GetUsername(UserName.AString);
|
||||
authInfo.GetPassword(Password.AString);
|
||||
authInfo.GetRealm(Realm.AString);
|
||||
pUserName:=UTF8Encode(UserName.ToString);
|
||||
pPassword:=UTF8Encode(Password.ToString);
|
||||
CheckBoxValue:=checkValue;
|
||||
RetryOnFail:=false;
|
||||
ThePrompt.FOnPromptAuthSimple(Gecko,pUserName,pPassword,UTF8Encode(WideString(checkboxLabel)),UTF8Encode(Realm.ToString),CheckBoxValue,RetryOnFail);
|
||||
Result:=RetryOnFail;
|
||||
UserName.Assign(UTF8Decode(pUserName));
|
||||
Password.Assign(UTF8Decode(pPassword));
|
||||
checkValue:=CheckBoxValue;
|
||||
authInfo.SetUsername(UserName.AString);
|
||||
authInfo.SetPassword(Password.AString);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
function IPromptService.AsyncPromptAuth(aParent: nsIDOMWindow;
|
||||
aChannel: nsIChannel; aCallback: nsIAuthPromptCallback;
|
||||
aContext: nsISupports; level: PRUint32; authInfo: nsIAuthInformation;
|
||||
const checkboxLabel: PWideChar; var checkValue: LongBool): nsICancelable; safecall;
|
||||
begin
|
||||
Result:=nil;
|
||||
end;
|
||||
|
||||
{ IPromptServiceFactory }
|
||||
|
||||
procedure IPromptServiceFactory.CreateInstance(aOuter: nsISupports; constref
|
||||
iid: TGUID; out _result); safecall;
|
||||
begin
|
||||
if not Assigned(ThisGeckoPromptService) then
|
||||
ThisGeckoPromptService:=IPromptService.Create;
|
||||
ThisGeckoPromptService.QueryInterface(IID,_result);
|
||||
end;
|
||||
|
||||
procedure IPromptServiceFactory.LockFactory(lock: PRBool); safecall;
|
||||
begin
|
||||
//Unused by Gecko but keep to be ABI compatible in Win32.
|
||||
end;
|
||||
|
||||
|
||||
end.
|
||||
|
241
components/geckoport/version2/Components/GeckoSimpleProfile.pas
Normal file
241
components/geckoport/version2/Components/GeckoSimpleProfile.pas
Normal file
@ -0,0 +1,241 @@
|
||||
(* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla 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/MPL/
|
||||
*
|
||||
* 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 GeckoComponents for Delphi.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Takanori Ito.
|
||||
* Portions created by the Initial Developer are Copyright (C) 2003
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** *)
|
||||
unit GeckoSimpleProfile;
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Windows, Messages, SysUtils, Classes;
|
||||
|
||||
type
|
||||
TGeckoSimpleProfile = class(TComponent)
|
||||
private
|
||||
{ Private �錾 }
|
||||
procedure SetProfileBaseDirectory(Value: String);
|
||||
function GetProfileBaseDirectory: String;
|
||||
protected
|
||||
{ Protected �錾 }
|
||||
public
|
||||
{ Public �錾 }
|
||||
constructor Create(AOwner: TComponent); override;
|
||||
destructor Destroy; override;
|
||||
published
|
||||
{ Published �錾 }
|
||||
property ProfileBaseDirectory: String
|
||||
read GetProfileBaseDirectory
|
||||
write SetProfileBaseDirectory;
|
||||
end;
|
||||
|
||||
procedure Register;
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
nsXPCOM, nsXPCOMGlue, nsError, nsGeckoStrings, nsProfile, nsTypes, nsInit,
|
||||
GeckoInit;
|
||||
|
||||
procedure Register;
|
||||
begin
|
||||
RegisterComponents('Gecko', [TGeckoSimpleProfile]);
|
||||
end;
|
||||
|
||||
var
|
||||
sProfileDirServiceProvider: nsProfileDirServiceProvider;
|
||||
sProfileBaseDirectory: String;
|
||||
sRefCnt: Integer = 0;
|
||||
|
||||
procedure ChangeProfileBaseDirectory; forward;
|
||||
procedure SavePreferences; forward;
|
||||
procedure LoadPreferences; forward;
|
||||
|
||||
constructor TGeckoSimpleProfile.Create(AOwner: TComponent);
|
||||
var
|
||||
provider: nsProfileDirServiceProvider;
|
||||
begin
|
||||
inherited Create(AOwner);
|
||||
|
||||
if not (csDesigning in ComponentState) then
|
||||
begin
|
||||
GeckoComponentsStartup;
|
||||
|
||||
if not Assigned(sProfileDirServiceProvider) then
|
||||
begin
|
||||
provider := NS_NewProfileDirServiceProvider(True);
|
||||
|
||||
sProfileDirServiceProvider := provider;
|
||||
|
||||
//if Length(sProfileBaseDirectory)>0 then
|
||||
ChangeProfileBaseDirectory;
|
||||
sProfileDirServiceProvider.Register;
|
||||
end;
|
||||
Inc(sRefCnt);
|
||||
end;
|
||||
end;
|
||||
|
||||
destructor TGeckoSimpleProfile.Destroy;
|
||||
begin
|
||||
if not (csDesigning in ComponentState) then
|
||||
begin
|
||||
SavePreferences;
|
||||
|
||||
Dec(sRefCnt);
|
||||
if sRefCnt=0 then
|
||||
sProfileDirServiceProvider := nil;
|
||||
|
||||
GeckoComponentsShutdown;
|
||||
end;
|
||||
|
||||
inherited;
|
||||
end;
|
||||
|
||||
procedure TGeckoSimpleProfile.SetProfileBaseDirectory(Value: String);
|
||||
begin
|
||||
if Value = sProfileBaseDirectory then Exit;
|
||||
|
||||
sProfileBaseDirectory := Value;
|
||||
|
||||
if not (csDesigning in ComponentState) then
|
||||
begin
|
||||
ChangeProfileBaseDirectory;
|
||||
LoadPreferences;
|
||||
end;
|
||||
end;
|
||||
|
||||
function TGeckoSimpleProfile.GetProfileBaseDirectory: String;
|
||||
begin
|
||||
Result := sProfileBaseDirectory;
|
||||
end;
|
||||
|
||||
procedure ChangeProfileBaseDirectory;
|
||||
var
|
||||
rv: nsresult;
|
||||
localFile: nsILocalFile;
|
||||
{$ifndef UNICODE}
|
||||
localFileStr: IInterfacedCString;
|
||||
{$else}
|
||||
localFileStr: IInterfacedString;
|
||||
{$endif}
|
||||
modulePath: array[0..MAX_PATH] of Char;
|
||||
targetPath, relativePath: String;
|
||||
begin
|
||||
GetModuleFileName(0, modulePath, MAX_PATH);
|
||||
|
||||
if (Length(sProfileBaseDirectory)>0) and
|
||||
(sProfileBaseDirectory[1] = '\') then
|
||||
begin
|
||||
// case of Path from root or network path
|
||||
if (Length(sProfileBaseDirectory)>=2) and
|
||||
(sProfileBaseDirectory[2] <> '\') then
|
||||
begin
|
||||
// case of Path from root
|
||||
targetPath := ExtractFileDrive(modulePath) + sProfileBaseDirectory;
|
||||
end else
|
||||
begin
|
||||
// case of network path
|
||||
targetPath := sProfileBaseDirectory;
|
||||
end;
|
||||
end else
|
||||
if (Length(sProfileBaseDirectory)<3) or
|
||||
(sProfileBaseDirectory[2] <> ':') then
|
||||
begin
|
||||
// case of relative path
|
||||
targetPath := ExtractFileDir(modulePath);
|
||||
if Length(sProfileBaseDirectory)>0 then
|
||||
relativePath := sProfileBaseDirectory;
|
||||
end else
|
||||
begin
|
||||
// case of full path
|
||||
targetPath := sProfileBaseDirectory;
|
||||
end;
|
||||
|
||||
try
|
||||
{$ifndef UNICODE}
|
||||
localFileStr := NewCString(targetPath);
|
||||
{$else}
|
||||
localFileStr := NewString(targetPath);
|
||||
{$endif}
|
||||
except
|
||||
Exit;
|
||||
end;
|
||||
{$ifndef UNICODE}
|
||||
rv := NS_NewNativeLocalFile(localFileStr.ACString, True, localFile);
|
||||
{$else}
|
||||
rv := NS_NewLocalFile(localFileStr.AString, True, localFile);
|
||||
{$endif}
|
||||
if NS_FAILED(rv) then Exit;
|
||||
|
||||
if Length(relativePath)>0 then
|
||||
begin
|
||||
localFileStr.Assign(relativePath);
|
||||
{$ifndef UNICODE}
|
||||
localFile.AppendRelativeNativePath(localFileStr.ACString);
|
||||
{$else}
|
||||
localFile.AppendRelativePath(localFileStr.AString);
|
||||
{$endif}
|
||||
end;
|
||||
|
||||
sProfileDirServiceProvider.SetProfileDir(localFile);
|
||||
end;
|
||||
|
||||
procedure SavePreferences;
|
||||
var
|
||||
prefSrv: nsIPrefService;
|
||||
prefFile: nsIFile;
|
||||
begin
|
||||
NS_GetService(NS_PREFSERVICE_CID, nsIPrefService, prefSrv);
|
||||
prefFile := NS_GetSpecialDirectory(NS_APP_PREFS_50_FILE);
|
||||
prefSrv.SavePrefFile(prefFile);
|
||||
end;
|
||||
|
||||
procedure LoadPreferences;
|
||||
var
|
||||
prefSrv: nsIPrefService;
|
||||
prefFile, prefDir: nsIFile;
|
||||
begin
|
||||
NS_GetService(NS_PREFSERVICE_CID, nsIPrefService, prefSrv);
|
||||
prefDir := NS_GetSpecialDirectory(NS_APP_PREFS_50_DIR);
|
||||
if not prefDir.Exists then
|
||||
begin
|
||||
prefDir.Create(NS_IFILE_DIRECTORY_TYPE, 7*64+5*8+5);
|
||||
end;
|
||||
prefFile := NS_GetSpecialDirectory(NS_APP_PREFS_50_FILE);
|
||||
prefSrv.ResetPrefs;
|
||||
if prefFile.Exists then
|
||||
begin
|
||||
prefSrv.ReadUserPrefs(prefFile);
|
||||
end;
|
||||
end;
|
||||
|
||||
end.
|
BIN
components/geckoport/version2/Components/TGeckoBrowser.bmp
Executable file
BIN
components/geckoport/version2/Components/TGeckoBrowser.bmp
Executable file
Binary file not shown.
After Width: | Height: | Size: 1.7 KiB |
BIN
components/geckoport/version2/Components/TGeckoPrompt.bmp
Normal file
BIN
components/geckoport/version2/Components/TGeckoPrompt.bmp
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.6 KiB |
BIN
components/geckoport/version2/Components/gecko-logo.png
Normal file
BIN
components/geckoport/version2/Components/gecko-logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 26 KiB |
BIN
components/geckoport/version2/Components/geckologo.png
Normal file
BIN
components/geckoport/version2/Components/geckologo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 26 KiB |
@ -0,0 +1 @@
|
||||
ID_GECKO_LOGO RCDATA geckologo.png
|
175
components/geckoport/version2/GeckoSDK.bdsproj
Normal file
175
components/geckoport/version2/GeckoSDK.bdsproj
Normal file
@ -0,0 +1,175 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<BorlandProject>
|
||||
<PersonalityInfo>
|
||||
<Option>
|
||||
<Option Name="Personality">Delphi.Personality</Option>
|
||||
<Option Name="ProjectType">VCLApplication</Option>
|
||||
<Option Name="Version">1.0</Option>
|
||||
<Option Name="GUID">{239047FF-4778-482A-B797-310326B0188B}</Option>
|
||||
</Option>
|
||||
</PersonalityInfo>
|
||||
<Delphi.Personality>
|
||||
<Source>
|
||||
<Source Name="MainSource">GeckoSDK.dpk</Source>
|
||||
</Source>
|
||||
<FileVersion>
|
||||
<FileVersion Name="Version">7.0</FileVersion>
|
||||
</FileVersion>
|
||||
<Compiler>
|
||||
<Compiler Name="A">8</Compiler>
|
||||
<Compiler Name="B">0</Compiler>
|
||||
<Compiler Name="C">1</Compiler>
|
||||
<Compiler Name="D">1</Compiler>
|
||||
<Compiler Name="E">0</Compiler>
|
||||
<Compiler Name="F">0</Compiler>
|
||||
<Compiler Name="G">1</Compiler>
|
||||
<Compiler Name="H">1</Compiler>
|
||||
<Compiler Name="I">1</Compiler>
|
||||
<Compiler Name="J">0</Compiler>
|
||||
<Compiler Name="K">0</Compiler>
|
||||
<Compiler Name="L">1</Compiler>
|
||||
<Compiler Name="M">0</Compiler>
|
||||
<Compiler Name="N">1</Compiler>
|
||||
<Compiler Name="O">1</Compiler>
|
||||
<Compiler Name="P">1</Compiler>
|
||||
<Compiler Name="Q">0</Compiler>
|
||||
<Compiler Name="R">0</Compiler>
|
||||
<Compiler Name="S">0</Compiler>
|
||||
<Compiler Name="T">1</Compiler>
|
||||
<Compiler Name="U">0</Compiler>
|
||||
<Compiler Name="V">1</Compiler>
|
||||
<Compiler Name="W">0</Compiler>
|
||||
<Compiler Name="X">1</Compiler>
|
||||
<Compiler Name="Y">1</Compiler>
|
||||
<Compiler Name="Z">1</Compiler>
|
||||
<Compiler Name="ShowHints">True</Compiler>
|
||||
<Compiler Name="ShowWarnings">True</Compiler>
|
||||
<Compiler Name="UnitAliases">WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;</Compiler>
|
||||
<Compiler Name="NamespacePrefix"></Compiler>
|
||||
<Compiler Name="GenerateDocumentation">False</Compiler>
|
||||
<Compiler Name="DefaultNamespace"></Compiler>
|
||||
<Compiler Name="SymbolDeprecated">True</Compiler>
|
||||
<Compiler Name="SymbolLibrary">True</Compiler>
|
||||
<Compiler Name="SymbolPlatform">True</Compiler>
|
||||
<Compiler Name="SymbolExperimental">True</Compiler>
|
||||
<Compiler Name="UnitLibrary">True</Compiler>
|
||||
<Compiler Name="UnitPlatform">True</Compiler>
|
||||
<Compiler Name="UnitDeprecated">True</Compiler>
|
||||
<Compiler Name="UnitExperimental">True</Compiler>
|
||||
<Compiler Name="HResultCompat">True</Compiler>
|
||||
<Compiler Name="HidingMember">True</Compiler>
|
||||
<Compiler Name="HiddenVirtual">True</Compiler>
|
||||
<Compiler Name="Garbage">True</Compiler>
|
||||
<Compiler Name="BoundsError">True</Compiler>
|
||||
<Compiler Name="ZeroNilCompat">True</Compiler>
|
||||
<Compiler Name="StringConstTruncated">True</Compiler>
|
||||
<Compiler Name="ForLoopVarVarPar">True</Compiler>
|
||||
<Compiler Name="TypedConstVarPar">True</Compiler>
|
||||
<Compiler Name="AsgToTypedConst">True</Compiler>
|
||||
<Compiler Name="CaseLabelRange">True</Compiler>
|
||||
<Compiler Name="ForVariable">True</Compiler>
|
||||
<Compiler Name="ConstructingAbstract">True</Compiler>
|
||||
<Compiler Name="ComparisonFalse">True</Compiler>
|
||||
<Compiler Name="ComparisonTrue">True</Compiler>
|
||||
<Compiler Name="ComparingSignedUnsigned">True</Compiler>
|
||||
<Compiler Name="CombiningSignedUnsigned">True</Compiler>
|
||||
<Compiler Name="UnsupportedConstruct">True</Compiler>
|
||||
<Compiler Name="FileOpen">True</Compiler>
|
||||
<Compiler Name="FileOpenUnitSrc">True</Compiler>
|
||||
<Compiler Name="BadGlobalSymbol">True</Compiler>
|
||||
<Compiler Name="DuplicateConstructorDestructor">True</Compiler>
|
||||
<Compiler Name="InvalidDirective">True</Compiler>
|
||||
<Compiler Name="PackageNoLink">True</Compiler>
|
||||
<Compiler Name="PackageThreadVar">True</Compiler>
|
||||
<Compiler Name="ImplicitImport">True</Compiler>
|
||||
<Compiler Name="HPPEMITIgnored">True</Compiler>
|
||||
<Compiler Name="NoRetVal">True</Compiler>
|
||||
<Compiler Name="UseBeforeDef">True</Compiler>
|
||||
<Compiler Name="ForLoopVarUndef">True</Compiler>
|
||||
<Compiler Name="UnitNameMismatch">True</Compiler>
|
||||
<Compiler Name="NoCFGFileFound">True</Compiler>
|
||||
<Compiler Name="ImplicitVariants">True</Compiler>
|
||||
<Compiler Name="UnicodeToLocale">True</Compiler>
|
||||
<Compiler Name="LocaleToUnicode">True</Compiler>
|
||||
<Compiler Name="ImagebaseMultiple">True</Compiler>
|
||||
<Compiler Name="SuspiciousTypecast">True</Compiler>
|
||||
<Compiler Name="PrivatePropAccessor">True</Compiler>
|
||||
<Compiler Name="UnsafeType">False</Compiler>
|
||||
<Compiler Name="UnsafeCode">False</Compiler>
|
||||
<Compiler Name="UnsafeCast">False</Compiler>
|
||||
<Compiler Name="OptionTruncated">True</Compiler>
|
||||
<Compiler Name="WideCharReduced">True</Compiler>
|
||||
<Compiler Name="DuplicatesIgnored">True</Compiler>
|
||||
<Compiler Name="UnitInitSeq">True</Compiler>
|
||||
<Compiler Name="LocalPInvoke">True</Compiler>
|
||||
<Compiler Name="MessageDirective">True</Compiler>
|
||||
<Compiler Name="CodePage"></Compiler>
|
||||
</Compiler>
|
||||
<Linker>
|
||||
<Linker Name="MapFile">0</Linker>
|
||||
<Linker Name="OutputObjs">0</Linker>
|
||||
<Linker Name="GenerateHpps">False</Linker>
|
||||
<Linker Name="ConsoleApp">1</Linker>
|
||||
<Linker Name="DebugInfo">False</Linker>
|
||||
<Linker Name="RemoteSymbols">False</Linker>
|
||||
<Linker Name="GenerateDRC">False</Linker>
|
||||
<Linker Name="MinStackSize">16384</Linker>
|
||||
<Linker Name="MaxStackSize">1048576</Linker>
|
||||
<Linker Name="ImageBase">4194304</Linker>
|
||||
<Linker Name="ExeDescription">Gecko SDK</Linker>
|
||||
</Linker>
|
||||
<Directories>
|
||||
<Directories Name="OutputDir"></Directories>
|
||||
<Directories Name="UnitOutputDir"></Directories>
|
||||
<Directories Name="PackageDLLOutputDir"></Directories>
|
||||
<Directories Name="PackageDCPOutputDir"></Directories>
|
||||
<Directories Name="SearchPath"></Directories>
|
||||
<Directories Name="Packages"></Directories>
|
||||
<Directories Name="Conditionals"></Directories>
|
||||
<Directories Name="DebugSourceDirs"></Directories>
|
||||
<Directories Name="UsePackages">False</Directories>
|
||||
</Directories>
|
||||
<Parameters>
|
||||
<Parameters Name="RunParams"></Parameters>
|
||||
<Parameters Name="HostApplication"></Parameters>
|
||||
<Parameters Name="Launcher"></Parameters>
|
||||
<Parameters Name="UseLauncher">False</Parameters>
|
||||
<Parameters Name="DebugCWD"></Parameters>
|
||||
<Parameters Name="Debug Symbols Search Path"></Parameters>
|
||||
<Parameters Name="LoadAllSymbols">True</Parameters>
|
||||
<Parameters Name="LoadUnspecifiedSymbols">False</Parameters>
|
||||
</Parameters>
|
||||
<Language>
|
||||
<Language Name="ActiveLang"></Language>
|
||||
<Language Name="ProjectLang">$00000000</Language>
|
||||
<Language Name="RootDir"></Language>
|
||||
</Language>
|
||||
<VersionInfo>
|
||||
<VersionInfo Name="IncludeVerInfo">False</VersionInfo>
|
||||
<VersionInfo Name="AutoIncBuild">False</VersionInfo>
|
||||
<VersionInfo Name="MajorVer">1</VersionInfo>
|
||||
<VersionInfo Name="MinorVer">0</VersionInfo>
|
||||
<VersionInfo Name="Release">0</VersionInfo>
|
||||
<VersionInfo Name="Build">0</VersionInfo>
|
||||
<VersionInfo Name="Debug">False</VersionInfo>
|
||||
<VersionInfo Name="PreRelease">False</VersionInfo>
|
||||
<VersionInfo Name="Special">False</VersionInfo>
|
||||
<VersionInfo Name="Private">False</VersionInfo>
|
||||
<VersionInfo Name="DLL">False</VersionInfo>
|
||||
<VersionInfo Name="Locale">1041</VersionInfo>
|
||||
<VersionInfo Name="CodePage">932</VersionInfo>
|
||||
</VersionInfo>
|
||||
<VersionInfoKeys>
|
||||
<VersionInfoKeys Name="CompanyName"></VersionInfoKeys>
|
||||
<VersionInfoKeys Name="FileDescription"></VersionInfoKeys>
|
||||
<VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys>
|
||||
<VersionInfoKeys Name="InternalName"></VersionInfoKeys>
|
||||
<VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys>
|
||||
<VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys>
|
||||
<VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys>
|
||||
<VersionInfoKeys Name="ProductName"></VersionInfoKeys>
|
||||
<VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys>
|
||||
<VersionInfoKeys Name="Comments"></VersionInfoKeys>
|
||||
</VersionInfoKeys>
|
||||
</Delphi.Personality>
|
||||
</BorlandProject>
|
90
components/geckoport/version2/GeckoSDK.dpk
Normal file
90
components/geckoport/version2/GeckoSDK.dpk
Normal file
@ -0,0 +1,90 @@
|
||||
(* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla 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/MPL/
|
||||
*
|
||||
* 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 nesitive thinking.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Takanori Ito.
|
||||
* Portions created by the Initial Developer are Copyright (C) 2003
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
* Takanori Itou <necottie@nesitive.net>
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** *)
|
||||
package GeckoSDK;
|
||||
|
||||
{$R *.res}
|
||||
{$ALIGN 8}
|
||||
{$ASSERTIONS ON}
|
||||
{$BOOLEVAL OFF}
|
||||
{$DEBUGINFO ON}
|
||||
{$EXTENDEDSYNTAX ON}
|
||||
{$IMPORTEDDATA ON}
|
||||
{$IOCHECKS ON}
|
||||
{$LOCALSYMBOLS ON}
|
||||
{$LONGSTRINGS ON}
|
||||
{$OPENSTRINGS ON}
|
||||
{$OPTIMIZATION ON}
|
||||
{$OVERFLOWCHECKS OFF}
|
||||
{$RANGECHECKS OFF}
|
||||
{$REFERENCEINFO ON}
|
||||
{$SAFEDIVIDE OFF}
|
||||
{$STACKFRAMES OFF}
|
||||
{$TYPEDADDRESS ON}
|
||||
{$VARSTRINGCHECKS ON}
|
||||
{$WRITEABLECONST OFF}
|
||||
{$MINENUMSIZE 1}
|
||||
{$IMAGEBASE $400000}
|
||||
{$DESCRIPTION 'Gecko SDK'}
|
||||
{$IMPLICITBUILD OFF}
|
||||
|
||||
requires
|
||||
rtl;
|
||||
|
||||
contains
|
||||
nsGeckoStrings in 'nsGeckoStrings.pas',
|
||||
nsInit in 'nsInit.pas',
|
||||
nsTypes in 'nsTypes.pas',
|
||||
nsXPCOM in 'nsXPCOM.pas',
|
||||
nsError in 'nsError.pas',
|
||||
nsMemory in 'nsMemory.pas',
|
||||
nsXPCOMGlue in 'nsXPCOMGlue.pas',
|
||||
nsConsts in 'nsConsts.pas',
|
||||
nsStream in 'nsStream.pas',
|
||||
nsNetUtil in 'nsNetUtil.pas',
|
||||
nsCID in 'nsCID.pas',
|
||||
nsProfile in 'nsProfile.pas',
|
||||
nsThreadUtils in 'nsThreadUtils.pas',
|
||||
nsErrorUtils in 'nsErrorUtils.pas',
|
||||
nsEnumerators in 'nsEnumerators.pas',
|
||||
nsXRE in 'nsXRE.pas',
|
||||
nsXPCOM_SAFE17 in 'each-version\nsXPCOM_SAFE17.pas',
|
||||
nsXPCOM_SAFE18 in 'each-version\nsXPCOM_SAFE18.pas',
|
||||
nsXPCOM_SAFE19 in 'each-version\nsXPCOM_SAFE19.pas',
|
||||
nsXPCOM_STD17 in 'each-version\nsXPCOM_STD17.pas',
|
||||
nsXPCOM_STD18 in 'each-version\nsXPCOM_STD18.pas',
|
||||
nsXPCOM_STD19 in 'each-version\nsXPCOM_STD19.pas';
|
||||
|
||||
end.
|
131
components/geckoport/version2/GeckoSDK.dproj
Normal file
131
components/geckoport/version2/GeckoSDK.dproj
Normal file
@ -0,0 +1,131 @@
|
||||
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<ProjectGuid>{837DBBFA-811B-4411-BA56-1CA066D4D735}</ProjectGuid>
|
||||
<MainSource>GeckoSDK.dpk</MainSource>
|
||||
<Config Condition="'$(Config)'==''">デバッグ</Config>
|
||||
<DCC_DCCCompiler>DCC32</DCC_DCCCompiler>
|
||||
<ProjectVersion>12.0</ProjectVersion>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
|
||||
<Base>true</Base>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Config)'=='リリース' or '$(Cfg_1)'!=''">
|
||||
<Cfg_1>true</Cfg_1>
|
||||
<CfgParent>Base</CfgParent>
|
||||
<Base>true</Base>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Config)'=='デバッグ' or '$(Cfg_2)'!=''">
|
||||
<Cfg_2>true</Cfg_2>
|
||||
<CfgParent>Base</CfgParent>
|
||||
<Base>true</Base>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Base)'!=''">
|
||||
<DCC_ImageBase>00400000</DCC_ImageBase>
|
||||
<DCC_SymbolReferenceInfo>1</DCC_SymbolReferenceInfo>
|
||||
<GenPackage>true</GenPackage>
|
||||
<DCC_DependencyCheckOutputName>..\..\..\..\..\..\..\All Users\Documents\RAD Studio\6.0\Bpl\GeckoSDK.bpl</DCC_DependencyCheckOutputName>
|
||||
<DCC_TypedAtParameter>true</DCC_TypedAtParameter>
|
||||
<DCC_Platform>x86</DCC_Platform>
|
||||
<DCC_Description>Gecko SDK</DCC_Description>
|
||||
<DCC_S>false</DCC_S>
|
||||
<DCC_OutputNeverBuildDcps>true</DCC_OutputNeverBuildDcps>
|
||||
<GenDll>true</GenDll>
|
||||
<DCC_N>false</DCC_N>
|
||||
<DCC_E>false</DCC_E>
|
||||
<DCC_F>false</DCC_F>
|
||||
<DCC_K>false</DCC_K>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Cfg_1)'!=''">
|
||||
<DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>
|
||||
<DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>
|
||||
<DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>
|
||||
<DCC_DebugInformation>false</DCC_DebugInformation>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Cfg_2)'!=''">
|
||||
<DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<DelphiCompile Include="GeckoSDK.dpk">
|
||||
<MainSource>MainSource</MainSource>
|
||||
</DelphiCompile>
|
||||
<DCCReference Include="rtl.dcp"/>
|
||||
<DCCReference Include="nsGeckoStrings.pas"/>
|
||||
<DCCReference Include="nsInit.pas"/>
|
||||
<DCCReference Include="nsTypes.pas"/>
|
||||
<DCCReference Include="nsXPCOM.pas"/>
|
||||
<DCCReference Include="nsError.pas"/>
|
||||
<DCCReference Include="nsMemory.pas"/>
|
||||
<DCCReference Include="nsXPCOMGlue.pas"/>
|
||||
<DCCReference Include="nsConsts.pas"/>
|
||||
<DCCReference Include="nsStream.pas"/>
|
||||
<DCCReference Include="nsNetUtil.pas"/>
|
||||
<DCCReference Include="nsCID.pas"/>
|
||||
<DCCReference Include="nsProfile.pas"/>
|
||||
<DCCReference Include="nsThreadUtils.pas"/>
|
||||
<DCCReference Include="nsErrorUtils.pas"/>
|
||||
<DCCReference Include="nsEnumerators.pas"/>
|
||||
<DCCReference Include="nsXRE.pas"/>
|
||||
<DCCReference Include="each-version\nsXPCOM_SAFE17.pas"/>
|
||||
<DCCReference Include="each-version\nsXPCOM_SAFE18.pas"/>
|
||||
<DCCReference Include="each-version\nsXPCOM_SAFE19.pas"/>
|
||||
<DCCReference Include="each-version\nsXPCOM_STD17.pas"/>
|
||||
<DCCReference Include="each-version\nsXPCOM_STD18.pas"/>
|
||||
<DCCReference Include="each-version\nsXPCOM_STD19.pas"/>
|
||||
<BuildConfiguration Include="Base">
|
||||
<Key>Base</Key>
|
||||
</BuildConfiguration>
|
||||
<BuildConfiguration Include="デバッグ">
|
||||
<Key>Cfg_2</Key>
|
||||
<CfgParent>Base</CfgParent>
|
||||
</BuildConfiguration>
|
||||
<BuildConfiguration Include="リリース">
|
||||
<Key>Cfg_1</Key>
|
||||
<CfgParent>Base</CfgParent>
|
||||
</BuildConfiguration>
|
||||
</ItemGroup>
|
||||
<Import Project="$(BDS)\Bin\CodeGear.Delphi.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Delphi.Targets')"/>
|
||||
<ProjectExtensions>
|
||||
<Borland.Personality>Delphi.Personality.12</Borland.Personality>
|
||||
<Borland.ProjectType>Package</Borland.ProjectType>
|
||||
<BorlandProject>
|
||||
<Delphi.Personality>
|
||||
<Source>
|
||||
<Source Name="MainSource">GeckoSDK.dpk</Source>
|
||||
</Source>
|
||||
<Parameters>
|
||||
<Parameters Name="UseLauncher">False</Parameters>
|
||||
<Parameters Name="LoadAllSymbols">True</Parameters>
|
||||
<Parameters Name="LoadUnspecifiedSymbols">False</Parameters>
|
||||
</Parameters>
|
||||
<VersionInfo>
|
||||
<VersionInfo Name="IncludeVerInfo">False</VersionInfo>
|
||||
<VersionInfo Name="AutoIncBuild">False</VersionInfo>
|
||||
<VersionInfo Name="MajorVer">1</VersionInfo>
|
||||
<VersionInfo Name="MinorVer">0</VersionInfo>
|
||||
<VersionInfo Name="Release">0</VersionInfo>
|
||||
<VersionInfo Name="Build">0</VersionInfo>
|
||||
<VersionInfo Name="Debug">False</VersionInfo>
|
||||
<VersionInfo Name="PreRelease">False</VersionInfo>
|
||||
<VersionInfo Name="Special">False</VersionInfo>
|
||||
<VersionInfo Name="Private">False</VersionInfo>
|
||||
<VersionInfo Name="DLL">False</VersionInfo>
|
||||
<VersionInfo Name="Locale">1041</VersionInfo>
|
||||
<VersionInfo Name="CodePage">932</VersionInfo>
|
||||
</VersionInfo>
|
||||
<VersionInfoKeys>
|
||||
<VersionInfoKeys Name="CompanyName"/>
|
||||
<VersionInfoKeys Name="FileDescription"/>
|
||||
<VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys>
|
||||
<VersionInfoKeys Name="InternalName"/>
|
||||
<VersionInfoKeys Name="LegalCopyright"/>
|
||||
<VersionInfoKeys Name="LegalTrademarks"/>
|
||||
<VersionInfoKeys Name="OriginalFilename"/>
|
||||
<VersionInfoKeys Name="ProductName"/>
|
||||
<VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys>
|
||||
<VersionInfoKeys Name="Comments"/>
|
||||
</VersionInfoKeys>
|
||||
</Delphi.Personality>
|
||||
</BorlandProject>
|
||||
<ProjectFileVersion>12</ProjectFileVersion>
|
||||
</ProjectExtensions>
|
||||
</Project>
|
39
components/geckoport/version2/SampleApps/ChromeWin.dpr
Executable file
39
components/geckoport/version2/SampleApps/ChromeWin.dpr
Executable file
@ -0,0 +1,39 @@
|
||||
program ChromeWin;
|
||||
|
||||
uses
|
||||
{$IFDEF LCL}
|
||||
Interfaces,
|
||||
{$IFDEF MSWINDOWS}
|
||||
Math,
|
||||
{$ENDIF}
|
||||
{$ENDIF}
|
||||
Forms,
|
||||
nsXRE,
|
||||
BrowserSupports,
|
||||
GeckoChromeWindow in 'GeckoChromeWindow.pas' {GeckoChromeForm};
|
||||
|
||||
//{$IFDEF MSWINDOWS}
|
||||
//{$R *.res}
|
||||
//{$ENDIF}
|
||||
|
||||
var
|
||||
navigation: nsIWebNavigation;
|
||||
begin
|
||||
{$IFDEF FPC}
|
||||
{$IFDEF MSWINDOWS}
|
||||
//For now - disable all floating point exceptions or XULRUNNER will crash.
|
||||
SetExceptionMask([exInvalidOp,exDenormalized,exZeroDivide,exOverflow,exUnderflow,exPrecision]);
|
||||
{$ENDIF}
|
||||
{$ENDIF}
|
||||
|
||||
Application.Initialize;
|
||||
|
||||
XRE_Startup('1.9', True, '2.0', False);
|
||||
|
||||
// GeckoChromeForm := TGeckoChromeForm.CreateWithChromeFlags(Application, 0);
|
||||
Application.CreateForm(TGeckoChromeForm, GeckoChromeForm);
|
||||
navigation := GeckoChromeForm.WebBrowser as nsIWebNavigation;
|
||||
navigation.LoadURI('http://www.lazarus.freepascal.org', 0, nil, nil, nil);
|
||||
|
||||
Application.Run;
|
||||
end.
|
91
components/geckoport/version2/SampleApps/ChromeWin.lpi
Executable file
91
components/geckoport/version2/SampleApps/ChromeWin.lpi
Executable file
@ -0,0 +1,91 @@
|
||||
<?xml version="1.0"?>
|
||||
<CONFIG>
|
||||
<ProjectOptions>
|
||||
<Version Value="9"/>
|
||||
<General>
|
||||
<Flags>
|
||||
<LRSInOutputDirectory Value="False"/>
|
||||
</Flags>
|
||||
<SessionStorage Value="InProjectDir"/>
|
||||
<MainUnit Value="0"/>
|
||||
</General>
|
||||
<VersionInfo>
|
||||
<Language Value=""/>
|
||||
<CharSet Value=""/>
|
||||
<StringTable ProductVersion=""/>
|
||||
</VersionInfo>
|
||||
<PublishOptions>
|
||||
<Version Value="2"/>
|
||||
<IgnoreBinaries Value="False"/>
|
||||
<IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/>
|
||||
<ExcludeFileFilter Value="*.(bak|ppu|ppw|o|so);*~;backup"/>
|
||||
</PublishOptions>
|
||||
<RunParams>
|
||||
<local>
|
||||
<FormatVersion Value="1"/>
|
||||
<LaunchingApplication PathPlusParams="/usr/X11R6/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/>
|
||||
</local>
|
||||
</RunParams>
|
||||
<RequiredPackages Count="2">
|
||||
<Item1>
|
||||
<PackageName Value="LCL"/>
|
||||
</Item1>
|
||||
<Item2>
|
||||
<PackageName Value="GeckoComponents"/>
|
||||
</Item2>
|
||||
</RequiredPackages>
|
||||
<Units Count="1">
|
||||
<Unit0>
|
||||
<Filename Value="ChromeWin.dpr"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
</Unit0>
|
||||
</Units>
|
||||
</ProjectOptions>
|
||||
<CompilerOptions>
|
||||
<Version Value="9"/>
|
||||
<SearchPaths>
|
||||
<OtherUnitFiles Value=".."/>
|
||||
</SearchPaths>
|
||||
<Parsing>
|
||||
<SyntaxOptions>
|
||||
<SyntaxMode Value="Delphi"/>
|
||||
<CStyleOperator Value="False"/>
|
||||
<IncludeAssertionCode Value="True"/>
|
||||
<AllowLabel Value="False"/>
|
||||
<CPPInline Value="False"/>
|
||||
<UseAnsiStrings Value="False"/>
|
||||
</SyntaxOptions>
|
||||
</Parsing>
|
||||
<CodeGeneration>
|
||||
<Checks>
|
||||
<IOChecks Value="True"/>
|
||||
<RangeChecks Value="True"/>
|
||||
<OverflowChecks Value="True"/>
|
||||
<StackChecks Value="True"/>
|
||||
</Checks>
|
||||
</CodeGeneration>
|
||||
<Linking>
|
||||
<Options>
|
||||
<Win32>
|
||||
<GraphicApplication Value="True"/>
|
||||
</Win32>
|
||||
</Options>
|
||||
</Linking>
|
||||
<Other>
|
||||
<CompilerMessages>
|
||||
<UseMsgFile Value="True"/>
|
||||
</CompilerMessages>
|
||||
<CompilerPath Value="$(CompPath)"/>
|
||||
</Other>
|
||||
</CompilerOptions>
|
||||
<Debugging>
|
||||
<Exceptions Count="2">
|
||||
<Item1>
|
||||
<Name Value="ECodetoolError"/>
|
||||
</Item1>
|
||||
<Item2>
|
||||
<Name Value="EFOpenError"/>
|
||||
</Item2>
|
||||
</Exceptions>
|
||||
</Debugging>
|
||||
</CONFIG>
|
173
components/geckoport/version2/SampleApps/GBrowser.bdsproj
Executable file
173
components/geckoport/version2/SampleApps/GBrowser.bdsproj
Executable file
@ -0,0 +1,173 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<BorlandProject>
|
||||
<PersonalityInfo>
|
||||
<Option>
|
||||
<Option Name="Personality">Delphi.Personality</Option>
|
||||
<Option Name="ProjectType"></Option>
|
||||
<Option Name="Version">1.0</Option>
|
||||
<Option Name="GUID">{28E7DC3C-09BC-4656-8854-3A84D6469EA3}</Option>
|
||||
</Option>
|
||||
</PersonalityInfo>
|
||||
<Delphi.Personality>
|
||||
<Source>
|
||||
<Source Name="MainSource">GBrowser.dpr</Source>
|
||||
</Source>
|
||||
<FileVersion>
|
||||
<FileVersion Name="Version">7.0</FileVersion>
|
||||
</FileVersion>
|
||||
<Compiler>
|
||||
<Compiler Name="A">8</Compiler>
|
||||
<Compiler Name="B">0</Compiler>
|
||||
<Compiler Name="C">1</Compiler>
|
||||
<Compiler Name="D">1</Compiler>
|
||||
<Compiler Name="E">0</Compiler>
|
||||
<Compiler Name="F">0</Compiler>
|
||||
<Compiler Name="G">1</Compiler>
|
||||
<Compiler Name="H">1</Compiler>
|
||||
<Compiler Name="I">1</Compiler>
|
||||
<Compiler Name="J">0</Compiler>
|
||||
<Compiler Name="K">0</Compiler>
|
||||
<Compiler Name="L">1</Compiler>
|
||||
<Compiler Name="M">0</Compiler>
|
||||
<Compiler Name="N">1</Compiler>
|
||||
<Compiler Name="O">1</Compiler>
|
||||
<Compiler Name="P">1</Compiler>
|
||||
<Compiler Name="Q">0</Compiler>
|
||||
<Compiler Name="R">0</Compiler>
|
||||
<Compiler Name="S">0</Compiler>
|
||||
<Compiler Name="T">0</Compiler>
|
||||
<Compiler Name="U">0</Compiler>
|
||||
<Compiler Name="V">1</Compiler>
|
||||
<Compiler Name="W">0</Compiler>
|
||||
<Compiler Name="X">1</Compiler>
|
||||
<Compiler Name="Y">1</Compiler>
|
||||
<Compiler Name="Z">1</Compiler>
|
||||
<Compiler Name="ShowHints">True</Compiler>
|
||||
<Compiler Name="ShowWarnings">True</Compiler>
|
||||
<Compiler Name="UnitAliases">WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;</Compiler>
|
||||
<Compiler Name="NamespacePrefix"></Compiler>
|
||||
<Compiler Name="GenerateDocumentation">False</Compiler>
|
||||
<Compiler Name="DefaultNamespace"></Compiler>
|
||||
<Compiler Name="SymbolDeprecated">True</Compiler>
|
||||
<Compiler Name="SymbolLibrary">True</Compiler>
|
||||
<Compiler Name="SymbolPlatform">True</Compiler>
|
||||
<Compiler Name="SymbolExperimental">True</Compiler>
|
||||
<Compiler Name="UnitLibrary">True</Compiler>
|
||||
<Compiler Name="UnitPlatform">True</Compiler>
|
||||
<Compiler Name="UnitDeprecated">True</Compiler>
|
||||
<Compiler Name="UnitExperimental">True</Compiler>
|
||||
<Compiler Name="HResultCompat">True</Compiler>
|
||||
<Compiler Name="HidingMember">True</Compiler>
|
||||
<Compiler Name="HiddenVirtual">True</Compiler>
|
||||
<Compiler Name="Garbage">True</Compiler>
|
||||
<Compiler Name="BoundsError">True</Compiler>
|
||||
<Compiler Name="ZeroNilCompat">True</Compiler>
|
||||
<Compiler Name="StringConstTruncated">True</Compiler>
|
||||
<Compiler Name="ForLoopVarVarPar">True</Compiler>
|
||||
<Compiler Name="TypedConstVarPar">True</Compiler>
|
||||
<Compiler Name="AsgToTypedConst">True</Compiler>
|
||||
<Compiler Name="CaseLabelRange">True</Compiler>
|
||||
<Compiler Name="ForVariable">True</Compiler>
|
||||
<Compiler Name="ConstructingAbstract">True</Compiler>
|
||||
<Compiler Name="ComparisonFalse">True</Compiler>
|
||||
<Compiler Name="ComparisonTrue">True</Compiler>
|
||||
<Compiler Name="ComparingSignedUnsigned">True</Compiler>
|
||||
<Compiler Name="CombiningSignedUnsigned">True</Compiler>
|
||||
<Compiler Name="UnsupportedConstruct">True</Compiler>
|
||||
<Compiler Name="FileOpen">True</Compiler>
|
||||
<Compiler Name="FileOpenUnitSrc">True</Compiler>
|
||||
<Compiler Name="BadGlobalSymbol">True</Compiler>
|
||||
<Compiler Name="DuplicateConstructorDestructor">True</Compiler>
|
||||
<Compiler Name="InvalidDirective">True</Compiler>
|
||||
<Compiler Name="PackageNoLink">True</Compiler>
|
||||
<Compiler Name="PackageThreadVar">True</Compiler>
|
||||
<Compiler Name="ImplicitImport">True</Compiler>
|
||||
<Compiler Name="HPPEMITIgnored">True</Compiler>
|
||||
<Compiler Name="NoRetVal">True</Compiler>
|
||||
<Compiler Name="UseBeforeDef">True</Compiler>
|
||||
<Compiler Name="ForLoopVarUndef">True</Compiler>
|
||||
<Compiler Name="UnitNameMismatch">True</Compiler>
|
||||
<Compiler Name="NoCFGFileFound">True</Compiler>
|
||||
<Compiler Name="MessageDirective">True</Compiler>
|
||||
<Compiler Name="ImplicitVariants">True</Compiler>
|
||||
<Compiler Name="UnicodeToLocale">True</Compiler>
|
||||
<Compiler Name="LocaleToUnicode">True</Compiler>
|
||||
<Compiler Name="ImagebaseMultiple">True</Compiler>
|
||||
<Compiler Name="SuspiciousTypecast">True</Compiler>
|
||||
<Compiler Name="PrivatePropAccessor">True</Compiler>
|
||||
<Compiler Name="UnsafeType">False</Compiler>
|
||||
<Compiler Name="UnsafeCode">False</Compiler>
|
||||
<Compiler Name="UnsafeCast">False</Compiler>
|
||||
<Compiler Name="OptionTruncated">True</Compiler>
|
||||
<Compiler Name="WideCharReduced">True</Compiler>
|
||||
<Compiler Name="DuplicatesIgnored">True</Compiler>
|
||||
</Compiler>
|
||||
<Linker>
|
||||
<Linker Name="MapFile">0</Linker>
|
||||
<Linker Name="OutputObjs">0</Linker>
|
||||
<Linker Name="ConsoleApp">1</Linker>
|
||||
<Linker Name="DebugInfo">False</Linker>
|
||||
<Linker Name="RemoteSymbols">False</Linker>
|
||||
<Linker Name="GenerateDRC">False</Linker>
|
||||
<Linker Name="MinStackSize">16384</Linker>
|
||||
<Linker Name="MaxStackSize">1048576</Linker>
|
||||
<Linker Name="ImageBase">4194304</Linker>
|
||||
<Linker Name="ExeDescription"></Linker>
|
||||
</Linker>
|
||||
<Directories>
|
||||
<Directories Name="OutputDir">C:\B2005\GeckoSDK\Gre</Directories>
|
||||
<Directories Name="UnitOutputDir"></Directories>
|
||||
<Directories Name="PackageDLLOutputDir"></Directories>
|
||||
<Directories Name="PackageDCPOutputDir"></Directories>
|
||||
<Directories Name="SearchPath"></Directories>
|
||||
<Directories Name="Packages">rtl;vcl;dbrtl;vcldb;vclx;adortl;dbxcds;dbexpress;vclib;ibxpress;IntrawebDB_72_90;Intraweb_72_90;xmlrtl;vclie;inet;inetdbbde;inetdbxpress;IndySystem;IndyCore;dclOfficeXP;VclSmp;dsnap;soaprtl;IndyProtocols;inetdb;bdertl;vcldbx;webdsnap;websnap;vclactnband;vclshlctrls;dsnapcon;teeui;teedb;tee;Rave60VCL;IE_EventD2005;O405_r70;IEDownD2005;TMSD2005;nplug;GeckoSDK;GeckoComponents</Directories>
|
||||
<Directories Name="Conditionals"></Directories>
|
||||
<Directories Name="DebugSourceDirs"></Directories>
|
||||
<Directories Name="UsePackages">False</Directories>
|
||||
</Directories>
|
||||
<Parameters>
|
||||
<Parameters Name="RunParams"></Parameters>
|
||||
<Parameters Name="HostApplication"></Parameters>
|
||||
<Parameters Name="Launcher"></Parameters>
|
||||
<Parameters Name="UseLauncher">False</Parameters>
|
||||
<Parameters Name="DebugCWD"></Parameters>
|
||||
<Parameters Name="RemoteHost"></Parameters>
|
||||
<Parameters Name="RemotePath"></Parameters>
|
||||
<Parameters Name="RemoteLauncher"></Parameters>
|
||||
<Parameters Name="RemoteCWD"></Parameters>
|
||||
<Parameters Name="RemoteDebug">False</Parameters>
|
||||
</Parameters>
|
||||
<Language>
|
||||
<Language Name="ActiveLang"></Language>
|
||||
<Language Name="ProjectLang">$00000000</Language>
|
||||
<Language Name="RootDir"></Language>
|
||||
</Language>
|
||||
<VersionInfo>
|
||||
<VersionInfo Name="IncludeVerInfo">False</VersionInfo>
|
||||
<VersionInfo Name="AutoIncBuild">False</VersionInfo>
|
||||
<VersionInfo Name="MajorVer">1</VersionInfo>
|
||||
<VersionInfo Name="MinorVer">0</VersionInfo>
|
||||
<VersionInfo Name="Release">0</VersionInfo>
|
||||
<VersionInfo Name="Build">0</VersionInfo>
|
||||
<VersionInfo Name="Debug">False</VersionInfo>
|
||||
<VersionInfo Name="PreRelease">False</VersionInfo>
|
||||
<VersionInfo Name="Special">False</VersionInfo>
|
||||
<VersionInfo Name="Private">False</VersionInfo>
|
||||
<VersionInfo Name="DLL">False</VersionInfo>
|
||||
<VersionInfo Name="Locale">1033</VersionInfo>
|
||||
<VersionInfo Name="CodePage">1252</VersionInfo>
|
||||
</VersionInfo>
|
||||
<VersionInfoKeys>
|
||||
<VersionInfoKeys Name="CompanyName"></VersionInfoKeys>
|
||||
<VersionInfoKeys Name="FileDescription"></VersionInfoKeys>
|
||||
<VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys>
|
||||
<VersionInfoKeys Name="InternalName"></VersionInfoKeys>
|
||||
<VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys>
|
||||
<VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys>
|
||||
<VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys>
|
||||
<VersionInfoKeys Name="ProductName"></VersionInfoKeys>
|
||||
<VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys>
|
||||
<VersionInfoKeys Name="Comments"></VersionInfoKeys>
|
||||
</VersionInfoKeys>
|
||||
</Delphi.Personality>
|
||||
</BorlandProject>
|
39
components/geckoport/version2/SampleApps/GBrowser.cfg
Executable file
39
components/geckoport/version2/SampleApps/GBrowser.cfg
Executable file
@ -0,0 +1,39 @@
|
||||
-$A8
|
||||
-$B-
|
||||
-$C+
|
||||
-$D+
|
||||
-$E-
|
||||
-$F-
|
||||
-$G+
|
||||
-$H+
|
||||
-$I+
|
||||
-$J-
|
||||
-$K-
|
||||
-$L+
|
||||
-$M-
|
||||
-$N+
|
||||
-$O+
|
||||
-$P+
|
||||
-$Q-
|
||||
-$R-
|
||||
-$S-
|
||||
-$T-
|
||||
-$U-
|
||||
-$V+
|
||||
-$W-
|
||||
-$X+
|
||||
-$YD
|
||||
-$Z1
|
||||
-cg
|
||||
-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
|
||||
-H+
|
||||
-W+
|
||||
-M
|
||||
-$M16384,1048576
|
||||
-K$00400000
|
||||
-E"C:\B2005\GeckoSDK\Gre"
|
||||
-LE"C:\Documents and Settings\Jaya\My Documents\Borland Studio Projects\Bpl"
|
||||
-LN"C:\Documents and Settings\Jaya\My Documents\Borland Studio Projects\Bpl"
|
||||
-w-UNSAFE_TYPE
|
||||
-w-UNSAFE_CODE
|
||||
-w-UNSAFE_CAST
|
@ -0,0 +1,5 @@
|
||||
<?xml version="1.0"?>
|
||||
<CONFIG>
|
||||
<Compiler Value="/usr/local/bin/ppc386" Date="1238949773"/>
|
||||
<Params Value=" -MDelphi -Sa -Cirot -O1 -gl -k-framework -kCocoa -WG -vewnhi -l -Fu../Components/units/i386-darwin/ -Fu../../../lazarus/ideintf/units/i386-darwin/ -Fu../../../lazarus/lcl/units/i386-darwin/ -Fu../../../lazarus/lcl/units/i386-darwin/cocoa/ -Fu../../../lazarus/packager/units/i386-darwin/ -Fu. -oGBrowser -dLCL -dLCLcocoa GBrowser.dpr"/>
|
||||
</CONFIG>
|
28
components/geckoport/version2/SampleApps/GBrowser.dpr
Normal file
28
components/geckoport/version2/SampleApps/GBrowser.dpr
Normal file
@ -0,0 +1,28 @@
|
||||
program GBrowser;
|
||||
|
||||
uses
|
||||
{$IFDEF LCL}
|
||||
Interfaces,
|
||||
{$IFDEF MSWINDOWS}
|
||||
Math,
|
||||
{$ENDIF}
|
||||
{$ENDIF}
|
||||
Forms,
|
||||
gec10 in 'gec10.pas' {Form1};
|
||||
|
||||
{$IFDEF MSWINDOWS}
|
||||
{$R *.res}
|
||||
{$ENDIF}
|
||||
|
||||
begin
|
||||
{$IFDEF FPC}
|
||||
{$IFDEF MSWINDOWS}
|
||||
//For now - disable all floating point exceptions or XULRUNNER will crash.
|
||||
SetExceptionMask([exInvalidOp,exDenormalized,exZeroDivide,exOverflow,exUnderflow,exPrecision]);
|
||||
{$ENDIF}
|
||||
{$ENDIF}
|
||||
|
||||
Application.Initialize;
|
||||
Application.CreateForm(TForm1, Form1);
|
||||
Application.Run;
|
||||
end.
|
105
components/geckoport/version2/SampleApps/GBrowser.lpi
Executable file
105
components/geckoport/version2/SampleApps/GBrowser.lpi
Executable file
@ -0,0 +1,105 @@
|
||||
<?xml version="1.0"?>
|
||||
<CONFIG>
|
||||
<ProjectOptions>
|
||||
<Version Value="7"/>
|
||||
<General>
|
||||
<Flags>
|
||||
<LRSInOutputDirectory Value="False"/>
|
||||
</Flags>
|
||||
<MainUnit Value="0"/>
|
||||
<TargetFileExt Value=""/>
|
||||
<ActiveEditorIndexAtStart Value="1"/>
|
||||
</General>
|
||||
<VersionInfo>
|
||||
<ProjectVersion Value=""/>
|
||||
<Language Value=""/>
|
||||
<CharSet Value=""/>
|
||||
</VersionInfo>
|
||||
<PublishOptions>
|
||||
<Version Value="2"/>
|
||||
<IgnoreBinaries Value="False"/>
|
||||
<IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/>
|
||||
<ExcludeFileFilter Value="*.(bak|ppu|ppw|o|so);*~;backup"/>
|
||||
</PublishOptions>
|
||||
<RunParams>
|
||||
<local>
|
||||
<FormatVersion Value="1"/>
|
||||
<LaunchingApplication PathPlusParams="/usr/X11R6/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/>
|
||||
</local>
|
||||
</RunParams>
|
||||
<RequiredPackages Count="2">
|
||||
<Item1>
|
||||
<PackageName Value="LCL"/>
|
||||
</Item1>
|
||||
<Item2>
|
||||
<PackageName Value="GeckoComponents"/>
|
||||
</Item2>
|
||||
</RequiredPackages>
|
||||
<Units Count="2">
|
||||
<Unit0>
|
||||
<Filename Value="GBrowser.dpr"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<CursorPos X="1" Y="1"/>
|
||||
<TopLine Value="1"/>
|
||||
<EditorIndex Value="0"/>
|
||||
<UsageCount Value="20"/>
|
||||
<Loaded Value="True"/>
|
||||
<SyntaxHighlighter Value="Delphi"/>
|
||||
</Unit0>
|
||||
<Unit1>
|
||||
<Filename Value="gec10.pas"/>
|
||||
<ComponentName Value="Form1"/>
|
||||
<HasResources Value="True"/>
|
||||
<ResourceBaseClass Value="Form"/>
|
||||
<UnitName Value="gec10"/>
|
||||
<CursorPos X="1" Y="1"/>
|
||||
<TopLine Value="44"/>
|
||||
<EditorIndex Value="1"/>
|
||||
<UsageCount Value="10"/>
|
||||
<Loaded Value="True"/>
|
||||
<SyntaxHighlighter Value="Delphi"/>
|
||||
</Unit1>
|
||||
</Units>
|
||||
<JumpHistory Count="0" HistoryIndex="-1"/>
|
||||
</ProjectOptions>
|
||||
<CompilerOptions>
|
||||
<Version Value="8"/>
|
||||
<Parsing>
|
||||
<SyntaxOptions>
|
||||
<SyntaxMode Value="Delphi"/>
|
||||
<CStyleOperator Value="False"/>
|
||||
<IncludeAssertionCode Value="True"/>
|
||||
<AllowLabel Value="False"/>
|
||||
<CPPInline Value="False"/>
|
||||
</SyntaxOptions>
|
||||
</Parsing>
|
||||
<CodeGeneration>
|
||||
<Checks>
|
||||
<IOChecks Value="True"/>
|
||||
<RangeChecks Value="True"/>
|
||||
<OverflowChecks Value="True"/>
|
||||
<StackChecks Value="True"/>
|
||||
</Checks>
|
||||
</CodeGeneration>
|
||||
<Linking>
|
||||
<Options>
|
||||
<Win32>
|
||||
<GraphicApplication Value="True"/>
|
||||
</Win32>
|
||||
</Options>
|
||||
</Linking>
|
||||
<Other>
|
||||
<CompilerPath Value="$(CompPath)"/>
|
||||
</Other>
|
||||
</CompilerOptions>
|
||||
<Debugging>
|
||||
<Exceptions Count="2">
|
||||
<Item1>
|
||||
<Name Value="ECodetoolError"/>
|
||||
</Item1>
|
||||
<Item2>
|
||||
<Name Value="EFOpenError"/>
|
||||
</Item2>
|
||||
</Exceptions>
|
||||
</Debugging>
|
||||
</CONFIG>
|
BIN
components/geckoport/version2/SampleApps/GBrowser.res
Executable file
BIN
components/geckoport/version2/SampleApps/GBrowser.res
Executable file
Binary file not shown.
50
components/geckoport/version2/SampleApps/gec10.dfm
Executable file
50
components/geckoport/version2/SampleApps/gec10.dfm
Executable file
@ -0,0 +1,50 @@
|
||||
object Form1: TForm1
|
||||
Left = 0
|
||||
Top = 0
|
||||
Width = 674
|
||||
Height = 461
|
||||
Caption = 'Form1'
|
||||
Color = clBtnFace
|
||||
Font.Charset = DEFAULT_CHARSET
|
||||
Font.Color = clWindowText
|
||||
Font.Height = -11
|
||||
Font.Name = 'Tahoma'
|
||||
Font.Style = []
|
||||
OldCreateOrder = False
|
||||
OnShow = FormShow
|
||||
PixelsPerInch = 96
|
||||
TextHeight = 13
|
||||
object lblProg: TLabel
|
||||
Left = 296
|
||||
Top = 400
|
||||
Width = 32
|
||||
Height = 13
|
||||
Caption = 'lblProg'
|
||||
end
|
||||
object lblProgMax: TLabel
|
||||
Left = 352
|
||||
Top = 400
|
||||
Width = 52
|
||||
Height = 13
|
||||
Caption = 'lblProgMax'
|
||||
end
|
||||
object GeckoBrowser1: TGeckoBrowser
|
||||
Left = 0
|
||||
Top = 16
|
||||
Width = 665
|
||||
Height = 257
|
||||
TabOrder = 0
|
||||
TabStop = False
|
||||
OnStatusChange = GeckoBrowser1StatusChange
|
||||
OnProgressChange = GeckoBrowser1ProgressChange
|
||||
OnLocationChange = GeckoBrowser1LocationChange
|
||||
end
|
||||
object ListBox1: TListBox
|
||||
Left = 0
|
||||
Top = 280
|
||||
Width = 665
|
||||
Height = 113
|
||||
ItemHeight = 13
|
||||
TabOrder = 1
|
||||
end
|
||||
end
|
48
components/geckoport/version2/SampleApps/gec10.lfm
Normal file
48
components/geckoport/version2/SampleApps/gec10.lfm
Normal file
@ -0,0 +1,48 @@
|
||||
object Form1: TForm1
|
||||
Left = 0
|
||||
Top = 0
|
||||
Width = 666
|
||||
Height = 427
|
||||
Caption = 'Form1'
|
||||
Color = clBtnFace
|
||||
Font.Charset = DEFAULT_CHARSET
|
||||
Font.Color = clWindowText
|
||||
Font.Height = -11
|
||||
Font.Name = 'Tahoma'
|
||||
Font.Style = []
|
||||
OnShow = FormShow
|
||||
PixelsPerInch = 96
|
||||
object lblProg: TLabel
|
||||
Left = 296
|
||||
Top = 400
|
||||
Width = 32
|
||||
Height = 13
|
||||
Caption = 'lblProg'
|
||||
end
|
||||
object lblProgMax: TLabel
|
||||
Left = 352
|
||||
Top = 400
|
||||
Width = 52
|
||||
Height = 13
|
||||
Caption = 'lblProgMax'
|
||||
end
|
||||
object GeckoBrowser1: TGeckoBrowser
|
||||
Left = 0
|
||||
Top = 16
|
||||
Width = 665
|
||||
Height = 257
|
||||
TabOrder = 0
|
||||
TabStop = False
|
||||
OnStatusChange = GeckoBrowser1StatusChange
|
||||
OnProgressChange = GeckoBrowser1ProgressChange
|
||||
OnLocationChange = GeckoBrowser1LocationChange
|
||||
end
|
||||
object ListBox1: TListBox
|
||||
Left = 0
|
||||
Top = 280
|
||||
Width = 665
|
||||
Height = 113
|
||||
ItemHeight = 13
|
||||
TabOrder = 1
|
||||
end
|
||||
end
|
15
components/geckoport/version2/SampleApps/gec10.lrs
Normal file
15
components/geckoport/version2/SampleApps/gec10.lrs
Normal file
@ -0,0 +1,15 @@
|
||||
LazarusResources.Add('TForm1','FORMDATA',[
|
||||
'TPF0'#6'TForm1'#5'Form1'#4'Left'#2#0#3'Top'#2#0#5'Width'#3#154#2#6'Height'#3
|
||||
+#171#1#7'Caption'#6#5'Form1'#5'Color'#7#9'clBtnFace'#12'Font.Charset'#7#15'D'
|
||||
+'EFAULT_CHARSET'#10'Font.Color'#7#12'clWindowText'#11'Font.Height'#2#245#9'F'
|
||||
+'ont.Name'#6#6'Tahoma'#10'Font.Style'#11#0#6'OnShow'#7#8'FormShow'#13'Pixels'
|
||||
+'PerInch'#2'`'#0#6'TLabel'#7'lblProg'#4'Left'#3'('#1#3'Top'#3#144#1#5'Width'
|
||||
+#2' '#6'Height'#2#13#7'Caption'#6#7'lblProg'#0#0#6'TLabel'#10'lblProgMax'#4
|
||||
+'Left'#3'`'#1#3'Top'#3#144#1#5'Width'#2'4'#6'Height'#2#13#7'Caption'#6#10'lb'
|
||||
+'lProgMax'#0#0#13'TGeckoBrowser'#13'GeckoBrowser1'#4'Left'#2#0#3'Top'#2#16#5
|
||||
+'Width'#3#153#2#6'Height'#3#1#1#8'TabOrder'#2#0#7'TabStop'#8#14'OnStatusChan'
|
||||
+'ge'#7#25'GeckoBrowser1StatusChange'#16'OnProgressChange'#7#27'GeckoBrowser1'
|
||||
+'ProgressChange'#16'OnLocationChange'#7#27'GeckoBrowser1LocationChange'#0#0#8
|
||||
+'TListBox'#8'ListBox1'#4'Left'#2#0#3'Top'#3#24#1#5'Width'#3#153#2#6'Height'#2
|
||||
+'q'#10'ItemHeight'#2#13#8'TabOrder'#2#1#0#0#0
|
||||
]);
|
69
components/geckoport/version2/SampleApps/gec10.pas
Executable file
69
components/geckoport/version2/SampleApps/gec10.pas
Executable file
@ -0,0 +1,69 @@
|
||||
unit gec10;
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
{$IFNDEF LCL} Windows, Messages, {$ELSE} LclIntf, LMessages, LclType, LResources, {$ENDIF}
|
||||
SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
||||
Dialogs, GeckoBrowser, StdCtrls;
|
||||
|
||||
type
|
||||
TForm1 = class(TForm)
|
||||
GeckoBrowser1: TGeckoBrowser;
|
||||
ListBox1: TListBox;
|
||||
lblProg: TLabel;
|
||||
lblProgMax: TLabel;
|
||||
procedure GeckoBrowser1LocationChange(Sender: TObject; const uri: string);
|
||||
procedure GeckoBrowser1ProgressChange(Sender: TObject; Progress,
|
||||
ProgressMax: Integer);
|
||||
procedure GeckoBrowser1StatusChange(Sender: TObject;
|
||||
aMessage: WideString);
|
||||
procedure FormShow(Sender: TObject);
|
||||
private
|
||||
{ Private declarations }
|
||||
public
|
||||
{ Public declarations }
|
||||
end;
|
||||
|
||||
var
|
||||
Form1: TForm1;
|
||||
|
||||
implementation
|
||||
|
||||
{$IFNDEF LCL}
|
||||
{$R *.dfm}
|
||||
{$ENDIF}
|
||||
|
||||
procedure TForm1.FormShow(Sender: TObject);
|
||||
begin
|
||||
// GeckoBrowser1.LoadURI('http://www.yahoo.com', 0, '', '', '');
|
||||
GeckoBrowser1.LoadURI('http://www.lazarus.freepascal.org');
|
||||
end;
|
||||
|
||||
procedure TForm1.GeckoBrowser1StatusChange(Sender: TObject;
|
||||
aMessage: WideString);
|
||||
begin
|
||||
ListBox1.Items.Add(aMessage);
|
||||
Application.ProcessMessages;
|
||||
end;
|
||||
|
||||
procedure TForm1.GeckoBrowser1ProgressChange(Sender: TObject; Progress,
|
||||
ProgressMax: Integer);
|
||||
begin
|
||||
lblProg.Caption := IntToStr(Progress);
|
||||
lblProgMax.Caption := IntToStr(ProgressMax);
|
||||
Application.ProcessMessages;
|
||||
end;
|
||||
|
||||
procedure TForm1.GeckoBrowser1LocationChange(Sender: TObject;
|
||||
const uri: string);
|
||||
begin
|
||||
// showmessage(uri);
|
||||
end;
|
||||
|
||||
initialization
|
||||
{$IFDEF LCL}
|
||||
{$I gec10.lrs} {Include form's resource file}
|
||||
{$ENDIF}
|
||||
|
||||
end.
|
1
components/geckoport/version2/SampleApps/lb-cw-cocoa.sh
Executable file
1
components/geckoport/version2/SampleApps/lb-cw-cocoa.sh
Executable file
@ -0,0 +1 @@
|
||||
~/laz_svn/lazbuild --primary-config-path=~/.laz_svn --ws=cocoa chromewin.lpi
|
1
components/geckoport/version2/SampleApps/lb-gb-cocoa.sh
Executable file
1
components/geckoport/version2/SampleApps/lb-gb-cocoa.sh
Executable file
@ -0,0 +1 @@
|
||||
~/laz_svn/lazbuild --primary-config-path=~/.laz_svn --ws=cocoa gbrowser.lpi
|
6
components/geckoport/version2/SampleApps/run-bw-mac.sh
Executable file
6
components/geckoport/version2/SampleApps/run-bw-mac.sh
Executable file
@ -0,0 +1,6 @@
|
||||
#!/bin/sh
|
||||
|
||||
#export DYLD_LIBRARY_PATH=/Applications/Firefox.app/Contents/MacOS
|
||||
export DYLD_LIBRARY_PATH=/Library/Frameworks/XUL.framework/Versions/Current
|
||||
|
||||
open BrowseWin.app
|
6
components/geckoport/version2/SampleApps/run-cw-mac.sh
Executable file
6
components/geckoport/version2/SampleApps/run-cw-mac.sh
Executable file
@ -0,0 +1,6 @@
|
||||
#!/bin/sh
|
||||
|
||||
#export DYLD_LIBRARY_PATH=/usr/lib:/Applications/Firefox.app/Contents/MacOS
|
||||
export DYLD_LIBRARY_PATH=/usr/lib:/Library/Frameworks/XUL.framework/Versions/Current
|
||||
|
||||
open ChromeWin.app
|
6
components/geckoport/version2/SampleApps/run-gb-mac.sh
Executable file
6
components/geckoport/version2/SampleApps/run-gb-mac.sh
Executable file
@ -0,0 +1,6 @@
|
||||
#!/bin/sh
|
||||
|
||||
#export DYLD_LIBRARY_PATH=/usr/lib:/Applications/Firefox.app/Contents/MacOS
|
||||
export DYLD_LIBRARY_PATH=/usr/lib:/Library/Frameworks/XUL.framework/Versions/Current
|
||||
|
||||
open GBrowser.app
|
@ -0,0 +1,7 @@
|
||||
nsWriteSegmentFun = function (aInStream: nsIInputStream_safe17;
|
||||
aClosure: Pointer;
|
||||
const aFromSegment: Pointer;
|
||||
aToOffset: PRUint32;
|
||||
aCount: PRUint32;
|
||||
out aWriteCount: PRUint32): nsresult; extdecl;
|
||||
|
@ -0,0 +1,7 @@
|
||||
nsWriteSegmentFun = function (aInStream: nsIInputStream_safe18;
|
||||
aClosure: Pointer;
|
||||
const aFromSegment: Pointer;
|
||||
aToOffset: PRUint32;
|
||||
aCount: PRUint32;
|
||||
out aWriteCount: PRUint32): nsresult; extdecl;
|
||||
|
@ -0,0 +1,7 @@
|
||||
nsWriteSegmentFun = function (aInStream: nsIInputStream_safe19;
|
||||
aClosure: Pointer;
|
||||
const aFromSegment: Pointer;
|
||||
aToOffset: PRUint32;
|
||||
aCount: PRUint32;
|
||||
out aWriteCount: PRUint32): nsresult; extdecl;
|
||||
|
@ -0,0 +1,7 @@
|
||||
nsWriteSegmentFun = function (aInStream: nsIInputStream_std17;
|
||||
aClosure: Pointer;
|
||||
const aFromSegment: Pointer;
|
||||
aToOffset: PRUint32;
|
||||
aCount: PRUint32;
|
||||
out aWriteCount: PRUint32): nsresult; extdecl;
|
||||
|
@ -0,0 +1,7 @@
|
||||
nsWriteSegmentFun = function (aInStream: nsIInputStream_std18;
|
||||
aClosure: Pointer;
|
||||
const aFromSegment: Pointer;
|
||||
aToOffset: PRUint32;
|
||||
aCount: PRUint32;
|
||||
out aWriteCount: PRUint32): nsresult; extdecl;
|
||||
|
@ -0,0 +1,7 @@
|
||||
nsWriteSegmentFun = function (aInStream: nsIInputStream_std19;
|
||||
aClosure: Pointer;
|
||||
const aFromSegment: Pointer;
|
||||
aToOffset: PRUint32;
|
||||
aCount: PRUint32;
|
||||
out aWriteCount: PRUint32): nsresult; extdecl;
|
||||
|
@ -0,0 +1,7 @@
|
||||
nsReadSegmentFun = function (aOutStream: nsIOutputStream_safe17;
|
||||
aClosure: Pointer;
|
||||
aToSegment: Pointer;
|
||||
aFromOffset: PRUint32;
|
||||
aCount: PRUint32;
|
||||
out aReadCount: PRUint32): nsresult; extdecl;
|
||||
|
@ -0,0 +1,7 @@
|
||||
nsReadSegmentFun = function (aOutStream: nsIOutputStream_safe18;
|
||||
aClosure: Pointer;
|
||||
aToSegment: Pointer;
|
||||
aFromOffset: PRUint32;
|
||||
aCount: PRUint32;
|
||||
out aReadCount: PRUint32): nsresult; extdecl;
|
||||
|
@ -0,0 +1,7 @@
|
||||
nsReadSegmentFun = function (aOutStream: nsIOutputStream_safe19;
|
||||
aClosure: Pointer;
|
||||
aToSegment: Pointer;
|
||||
aFromOffset: PRUint32;
|
||||
aCount: PRUint32;
|
||||
out aReadCount: PRUint32): nsresult; extdecl;
|
||||
|
@ -0,0 +1,7 @@
|
||||
nsReadSegmentFun = function (aOutStream: nsIOutputStream_std17;
|
||||
aClosure: Pointer;
|
||||
aToSegment: Pointer;
|
||||
aFromOffset: PRUint32;
|
||||
aCount: PRUint32;
|
||||
out aReadCount: PRUint32): nsresult; extdecl;
|
||||
|
@ -0,0 +1,7 @@
|
||||
nsReadSegmentFun = function (aOutStream: nsIOutputStream_std18;
|
||||
aClosure: Pointer;
|
||||
aToSegment: Pointer;
|
||||
aFromOffset: PRUint32;
|
||||
aCount: PRUint32;
|
||||
out aReadCount: PRUint32): nsresult; extdecl;
|
||||
|
@ -0,0 +1,7 @@
|
||||
nsReadSegmentFun = function (aOutStream: nsIOutputStream_std19;
|
||||
aClosure: Pointer;
|
||||
aToSegment: Pointer;
|
||||
aFromOffset: PRUint32;
|
||||
aCount: PRUint32;
|
||||
out aReadCount: PRUint32): nsresult; extdecl;
|
||||
|
197
components/geckoport/version2/each-version/nsXPCOM-1.7.list
Normal file
197
components/geckoport/version2/each-version/nsXPCOM-1.7.list
Normal file
@ -0,0 +1,197 @@
|
||||
domstubs.idl
|
||||
mozIJSSubScriptLoader.idl
|
||||
nsIASN1Object.idl
|
||||
nsIASN1Sequence.idl
|
||||
nsIBadCertListener.idl
|
||||
nsICategoryManager.idl
|
||||
nsICertificateDialogs.idl
|
||||
nsIChannel.idl
|
||||
nsIClassInfo.idl
|
||||
nsIClipboardCommands.idl
|
||||
nsIComponentManager.idl
|
||||
nsIComponentRegistrar.idl
|
||||
nsIContextMenuListener.idl
|
||||
nsICookie.idl
|
||||
nsICookieManager.idl
|
||||
nsICRLInfo.idl
|
||||
nsIDebug.idl
|
||||
nsIDirectoryService.idl
|
||||
nsIDOM3DocumentEvent.idl
|
||||
nsIDOM3EventTarget.idl
|
||||
nsIDOMAbstractView.idl
|
||||
nsIDOMAttr.idl
|
||||
nsIDOMBarProp.idl
|
||||
nsIDOMCDATASection.idl
|
||||
nsIDOMCharacterData.idl
|
||||
nsIDOMComment.idl
|
||||
nsIDOMCSSPrimitiveValue.idl
|
||||
nsIDOMCSSRule.idl
|
||||
nsIDOMCSSRuleList.idl
|
||||
nsIDOMCSSStyleDeclaration.idl
|
||||
nsIDOMCSSStyleSheet.idl
|
||||
nsIDOMCSSValue.idl
|
||||
nsIDOMCSSValueList.idl
|
||||
nsIDOMCustomEvent.idl
|
||||
nsIDOMDocument.idl
|
||||
nsIDOMDocumentEvent.idl
|
||||
nsIDOMDocumentFragment.idl
|
||||
nsIDOMDocumentRange.idl
|
||||
nsIDOMDocumentStyle.idl
|
||||
nsIDOMDocumentType.idl
|
||||
nsIDOMDocumentView.idl
|
||||
nsIDOMDOMException.idl
|
||||
nsIDOMDOMImplementation.idl
|
||||
nsIDOMElement.idl
|
||||
nsIDOMEntity.idl
|
||||
nsIDOMEntityReference.idl
|
||||
nsIDOMEvent.idl
|
||||
nsIDOMEventGroup.idl
|
||||
nsIDOMEventListener.idl
|
||||
nsIDOMEventTarget.idl
|
||||
nsIDOMHTMLAnchorElement.idl
|
||||
nsIDOMHTMLAppletElement.idl
|
||||
nsIDOMHTMLAreaElement.idl
|
||||
nsIDOMHTMLBaseElement.idl
|
||||
nsIDOMHTMLBaseFontElement.idl
|
||||
nsIDOMHTMLBodyElement.idl
|
||||
nsIDOMHTMLBRElement.idl
|
||||
nsIDOMHTMLButtonElement.idl
|
||||
nsIDOMHTMLCollection.idl
|
||||
nsIDOMHTMLDirectoryElement.idl
|
||||
nsIDOMHTMLDivElement.idl
|
||||
nsIDOMHTMLDListElement.idl
|
||||
nsIDOMHTMLDocument.idl
|
||||
nsIDOMHTMLElement.idl
|
||||
nsIDOMHTMLEmbedElement.idl
|
||||
nsIDOMHTMLFieldSetElement.idl
|
||||
nsIDOMHTMLFontElement.idl
|
||||
nsIDOMHTMLFormElement.idl
|
||||
nsIDOMHTMLFrameElement.idl
|
||||
nsIDOMHTMLFrameSetElement.idl
|
||||
nsIDOMHTMLHeadElement.idl
|
||||
nsIDOMHTMLHeadingElement.idl
|
||||
nsIDOMHTMLHRElement.idl
|
||||
nsIDOMHTMLHtmlElement.idl
|
||||
nsIDOMHTMLIFrameElement.idl
|
||||
nsIDOMHTMLImageElement.idl
|
||||
nsIDOMHTMLInputElement.idl
|
||||
nsIDOMHTMLIsIndexElement.idl
|
||||
nsIDOMHTMLLabelElement.idl
|
||||
nsIDOMHTMLLegendElement.idl
|
||||
nsIDOMHTMLLIElement.idl
|
||||
nsIDOMHTMLLinkElement.idl
|
||||
nsIDOMHTMLMapElement.idl
|
||||
nsIDOMHTMLMenuElement.idl
|
||||
nsIDOMHTMLMetaElement.idl
|
||||
nsIDOMHTMLModElement.idl
|
||||
nsIDOMHTMLObjectElement.idl
|
||||
nsIDOMHTMLOListElement.idl
|
||||
nsIDOMHTMLOptGroupElement.idl
|
||||
nsIDOMHTMLOptionElement.idl
|
||||
nsIDOMHTMLOptionsCollection.idl
|
||||
nsIDOMHTMLParagraphElement.idl
|
||||
nsIDOMHTMLParamElement.idl
|
||||
nsIDOMHTMLPreElement.idl
|
||||
nsIDOMHTMLQuoteElement.idl
|
||||
nsIDOMHTMLScriptElement.idl
|
||||
nsIDOMHTMLSelectElement.idl
|
||||
nsIDOMHTMLStyleElement.idl
|
||||
nsIDOMHTMLTableCaptionElem.idl
|
||||
nsIDOMHTMLTableCellElement.idl
|
||||
nsIDOMHTMLTableColElement.idl
|
||||
nsIDOMHTMLTableElement.idl
|
||||
nsIDOMHTMLTableRowElement.idl
|
||||
nsIDOMHTMLTableSectionElem.idl
|
||||
nsIDOMHTMLTextAreaElement.idl
|
||||
nsIDOMHTMLTitleElement.idl
|
||||
nsIDOMHTMLUListElement.idl
|
||||
nsIDOMMediaList.idl
|
||||
nsIDOMMouseEvent.idl
|
||||
nsIDOMNamedNodeMap.idl
|
||||
nsIDOMNode.idl
|
||||
nsIDOMNodeList.idl
|
||||
nsIDOMNotation.idl
|
||||
nsIDOMProcessingInstruction.idl
|
||||
nsIDOMRange.idl
|
||||
nsIDOMStyleSheet.idl
|
||||
nsIDOMStyleSheetList.idl
|
||||
nsIDOMText.idl
|
||||
nsIDOMUIEvent.idl
|
||||
nsIDOMWindow.idl
|
||||
nsIDOMWindow2.idl
|
||||
nsIDOMWindowCollection.idl
|
||||
nsIEmbeddingSiteWindow.idl
|
||||
nsIFactory.idl
|
||||
nsIFile.idl
|
||||
nsIFileURL.idl
|
||||
nsIGlobalHistory.idl
|
||||
nsIHistoryEntry.idl
|
||||
nsIHttpChannel.idl
|
||||
nsIHttpHeaderVisitor.idl
|
||||
nsIInputStream.idl
|
||||
nsIInterfaceRequestor.idl
|
||||
nsIIOService.idl
|
||||
nsILoadGroup.idl
|
||||
nsILocalFile.idl
|
||||
nsIMemory.idl
|
||||
nsIModule.idl
|
||||
nsIObserver.idl
|
||||
nsIObserverService.idl
|
||||
nsIOutputStream.idl
|
||||
nsIPassword.idl
|
||||
nsIPrefBranch.idl
|
||||
nsIPrefLocalizedString.idl
|
||||
nsIPrefService.idl
|
||||
nsIProfile.idl
|
||||
nsIProfileChangeStatus.idl
|
||||
nsIProgrammingLanguage.idl
|
||||
nsIPromptService.idl
|
||||
nsIProperties.idl
|
||||
nsIProtocolHandler.idl
|
||||
nsIRequest.idl
|
||||
nsIRequestObserver.idl
|
||||
nsIScriptableInputStream.idl
|
||||
nsISecurityWarningDialogs.idl
|
||||
nsISelection.idl
|
||||
nsIServiceManager.idl
|
||||
nsISHistory.idl
|
||||
nsISHistoryListener.idl
|
||||
nsISimpleEnumerator.idl
|
||||
nsIStreamListener.idl
|
||||
nsISupports.idl
|
||||
nsISupportsPrimitives.idl
|
||||
nsITooltipListener.idl
|
||||
nsITooltipTextProvider.idl
|
||||
nsITraceRefcnt.idl
|
||||
nsIUnicharStreamListener.idl
|
||||
nsIUploadChannel.idl
|
||||
nsIURI.idl
|
||||
nsIURIContentListener.idl
|
||||
nsIURL.idl
|
||||
nsIWeakReference.idl
|
||||
nsIWebBrowser.idl
|
||||
nsIWebBrowserChrome.idl
|
||||
nsIWebBrowserChromeFocus.idl
|
||||
nsIWebBrowserFind.idl
|
||||
nsIWebBrowserFocus.idl
|
||||
nsIWebBrowserPrint.idl
|
||||
nsIWebBrowserSetup.idl
|
||||
nsIWebProgress.idl
|
||||
nsIWebProgressListener.idl
|
||||
nsIWindowCreator.idl
|
||||
nsIWindowWatcher.idl
|
||||
nsIX509Cert.idl
|
||||
nsIX509CertDB.idl
|
||||
nsIX509CertValidity.idl
|
||||
#nsrootidl.idl
|
||||
|
||||
# following idls are not FROZEN, but neccessary to make nsXPCOM.pas bacause
|
||||
# interfaces included in such idls are referenced by FROZEN interfaces.
|
||||
nsIArray.ild
|
||||
nsIAuthPrompt.idl
|
||||
nsIDOMCounter.idl
|
||||
nsIDOMRect.idl
|
||||
nsIDOMRGBColor.idl
|
||||
nsIPrintSession.idl
|
||||
nsIPrintSettings.idl
|
||||
nsIPrompt.idl
|
200
components/geckoport/version2/each-version/nsXPCOM-1.8.list
Normal file
200
components/geckoport/version2/each-version/nsXPCOM-1.8.list
Normal file
@ -0,0 +1,200 @@
|
||||
domstubs.idl
|
||||
mozIJSSubScriptLoader.idl
|
||||
nsIASN1Object.idl
|
||||
nsIASN1Sequence.idl
|
||||
nsIBadCertListener.idl
|
||||
nsICategoryManager.idl
|
||||
nsICertificateDialogs.idl
|
||||
nsIChannel.idl
|
||||
nsIClassInfo.idl
|
||||
nsIClipboardCommands.idl
|
||||
nsIComponentManager.idl
|
||||
nsIComponentRegistrar.idl
|
||||
nsIContextMenuListener.idl
|
||||
nsICookie.idl
|
||||
nsICookieManager.idl
|
||||
nsICRLInfo.idl
|
||||
nsIDebug.idl
|
||||
nsIDirectoryService.idl
|
||||
nsIDOM3DocumentEvent.idl
|
||||
nsIDOM3EventTarget.idl
|
||||
nsIDOMAbstractView.idl
|
||||
nsIDOMAttr.idl
|
||||
nsIDOMBarProp.idl
|
||||
nsIDOMCDATASection.idl
|
||||
nsIDOMCharacterData.idl
|
||||
nsIDOMComment.idl
|
||||
nsIDOMCSSPrimitiveValue.idl
|
||||
nsIDOMCSSRule.idl
|
||||
nsIDOMCSSRuleList.idl
|
||||
nsIDOMCSSStyleDeclaration.idl
|
||||
nsIDOMCSSStyleSheet.idl
|
||||
nsIDOMCSSValue.idl
|
||||
nsIDOMCSSValueList.idl
|
||||
nsIDOMCustomEvent.idl
|
||||
nsIDOMDocument.idl
|
||||
nsIDOMDocumentEvent.idl
|
||||
nsIDOMDocumentFragment.idl
|
||||
nsIDOMDocumentRange.idl
|
||||
nsIDOMDocumentStyle.idl
|
||||
nsIDOMDocumentType.idl
|
||||
nsIDOMDocumentView.idl
|
||||
nsIDOMDOMException.idl
|
||||
nsIDOMDOMImplementation.idl
|
||||
nsIDOMElement.idl
|
||||
nsIDOMElementCSSInlineStyle.idl
|
||||
nsIDOMEntity.idl
|
||||
nsIDOMEntityReference.idl
|
||||
nsIDOMEvent.idl
|
||||
nsIDOMEventGroup.idl
|
||||
nsIDOMEventListener.idl
|
||||
nsIDOMEventTarget.idl
|
||||
nsIDOMHTMLAnchorElement.idl
|
||||
nsIDOMHTMLAppletElement.idl
|
||||
nsIDOMHTMLAreaElement.idl
|
||||
nsIDOMHTMLBaseElement.idl
|
||||
nsIDOMHTMLBaseFontElement.idl
|
||||
nsIDOMHTMLBodyElement.idl
|
||||
nsIDOMHTMLBRElement.idl
|
||||
nsIDOMHTMLButtonElement.idl
|
||||
nsIDOMHTMLCollection.idl
|
||||
nsIDOMHTMLDirectoryElement.idl
|
||||
nsIDOMHTMLDivElement.idl
|
||||
nsIDOMHTMLDListElement.idl
|
||||
nsIDOMHTMLDocument.idl
|
||||
nsIDOMHTMLElement.idl
|
||||
nsIDOMHTMLEmbedElement.idl
|
||||
nsIDOMHTMLFieldSetElement.idl
|
||||
nsIDOMHTMLFontElement.idl
|
||||
nsIDOMHTMLFormElement.idl
|
||||
nsIDOMHTMLFrameElement.idl
|
||||
nsIDOMHTMLFrameSetElement.idl
|
||||
nsIDOMHTMLHeadElement.idl
|
||||
nsIDOMHTMLHeadingElement.idl
|
||||
nsIDOMHTMLHRElement.idl
|
||||
nsIDOMHTMLHtmlElement.idl
|
||||
nsIDOMHTMLIFrameElement.idl
|
||||
nsIDOMHTMLImageElement.idl
|
||||
nsIDOMHTMLInputElement.idl
|
||||
nsIDOMHTMLIsIndexElement.idl
|
||||
nsIDOMHTMLLabelElement.idl
|
||||
nsIDOMHTMLLegendElement.idl
|
||||
nsIDOMHTMLLIElement.idl
|
||||
nsIDOMHTMLLinkElement.idl
|
||||
nsIDOMHTMLMapElement.idl
|
||||
nsIDOMHTMLMenuElement.idl
|
||||
nsIDOMHTMLMetaElement.idl
|
||||
nsIDOMHTMLModElement.idl
|
||||
nsIDOMHTMLObjectElement.idl
|
||||
nsIDOMHTMLOListElement.idl
|
||||
nsIDOMHTMLOptGroupElement.idl
|
||||
nsIDOMHTMLOptionElement.idl
|
||||
nsIDOMHTMLOptionsCollection.idl
|
||||
nsIDOMHTMLParagraphElement.idl
|
||||
nsIDOMHTMLParamElement.idl
|
||||
nsIDOMHTMLPreElement.idl
|
||||
nsIDOMHTMLQuoteElement.idl
|
||||
nsIDOMHTMLScriptElement.idl
|
||||
nsIDOMHTMLSelectElement.idl
|
||||
nsIDOMHTMLStyleElement.idl
|
||||
nsIDOMHTMLTableCaptionElem.idl
|
||||
nsIDOMHTMLTableCellElement.idl
|
||||
nsIDOMHTMLTableColElement.idl
|
||||
nsIDOMHTMLTableElement.idl
|
||||
nsIDOMHTMLTableRowElement.idl
|
||||
nsIDOMHTMLTableSectionElem.idl
|
||||
nsIDOMHTMLTextAreaElement.idl
|
||||
nsIDOMHTMLTitleElement.idl
|
||||
nsIDOMHTMLUListElement.idl
|
||||
nsIDOMMediaList.idl
|
||||
nsIDOMMouseEvent.idl
|
||||
nsIDOMNamedNodeMap.idl
|
||||
nsIDOMNode.idl
|
||||
nsIDOMNodeList.idl
|
||||
nsIDOMNotation.idl
|
||||
nsIDOMNSDocumentStyle.idl
|
||||
nsIDOMProcessingInstruction.idl
|
||||
nsIDOMRange.idl
|
||||
nsIDOMStyleSheet.idl
|
||||
nsIDOMStyleSheetList.idl
|
||||
nsIDOMText.idl
|
||||
nsIDOMUIEvent.idl
|
||||
nsIDOMWindow.idl
|
||||
nsIDOMWindow2.idl
|
||||
nsIDOMWindowCollection.idl
|
||||
nsIDOMWindowUtils.idl
|
||||
nsIEmbeddingSiteWindow.idl
|
||||
nsIFactory.idl
|
||||
nsIFile.idl
|
||||
nsIFileURL.idl
|
||||
nsIGlobalHistory.idl
|
||||
nsIHistoryEntry.idl
|
||||
nsIHttpChannel.idl
|
||||
nsIHttpHeaderVisitor.idl
|
||||
nsIInputStream.idl
|
||||
nsIInterfaceRequestor.idl
|
||||
nsIIOService.idl
|
||||
nsILoadGroup.idl
|
||||
nsILocalFile.idl
|
||||
nsIMemory.idl
|
||||
nsIModule.idl
|
||||
nsIObserver.idl
|
||||
nsIObserverService.idl
|
||||
nsIOutputStream.idl
|
||||
nsIPrefBranch.idl
|
||||
nsIPrefBranch2.idl
|
||||
nsIPrefLocalizedString.idl
|
||||
nsIPrefService.idl
|
||||
nsIProfile.idl
|
||||
nsIProfileChangeStatus.idl
|
||||
nsIProgrammingLanguage.idl
|
||||
nsIPromptService.idl
|
||||
nsIProperties.idl
|
||||
nsIProtocolHandler.idl
|
||||
nsIRequest.idl
|
||||
nsIRequestObserver.idl
|
||||
nsIScriptableInputStream.idl
|
||||
nsISecurityWarningDialogs.idl
|
||||
nsISelection.idl
|
||||
nsIServiceManager.idl
|
||||
nsISHistory.idl
|
||||
nsISHistoryListener.idl
|
||||
nsISimpleEnumerator.idl
|
||||
nsIStreamListener.idl
|
||||
nsISupports.idl
|
||||
nsISupportsPrimitives.idl
|
||||
nsITooltipListener.idl
|
||||
nsITooltipTextProvider.idl
|
||||
nsITraceRefcnt.idl
|
||||
nsIUnicharStreamListener.idl
|
||||
nsIUploadChannel.idl
|
||||
nsIURI.idl
|
||||
nsIURIContentListener.idl
|
||||
nsIURL.idl
|
||||
nsIWeakReference.idl
|
||||
nsIWebBrowser.idl
|
||||
nsIWebBrowserChrome.idl
|
||||
nsIWebBrowserChromeFocus.idl
|
||||
nsIWebBrowserFind.idl
|
||||
nsIWebBrowserFocus.idl
|
||||
nsIWebBrowserPrint.idl
|
||||
nsIWebBrowserSetup.idl
|
||||
nsIWebBrowserStream.idl
|
||||
nsIWebProgress.idl
|
||||
nsIWebProgressListener.idl
|
||||
nsIWindowCreator.idl
|
||||
nsIWindowWatcher.idl
|
||||
nsIX509Cert.idl
|
||||
nsIX509CertDB.idl
|
||||
nsIX509CertValidity.idl
|
||||
#nsrootidl.idl
|
||||
|
||||
# following idls are not FROZEN, but neccessary to make nsXPCOM.pas bacause
|
||||
# interfaces included in such idls are referenced by FROZEN interfaces.
|
||||
nsIArray.idl
|
||||
nsIAuthPrompt.idl
|
||||
nsIDOMCounter.idl
|
||||
nsIDOMRect.idl
|
||||
nsIDOMRGBColor.idl
|
||||
nsIPrintSettings.idl
|
||||
nsIPrompt.idl
|
203
components/geckoport/version2/each-version/nsXPCOM-1.9.list
Normal file
203
components/geckoport/version2/each-version/nsXPCOM-1.9.list
Normal file
@ -0,0 +1,203 @@
|
||||
domstubs.idl
|
||||
mozIJSSubScriptLoader.idl
|
||||
nsIArray.idl
|
||||
nsIASN1Object.idl
|
||||
nsIASN1Sequence.idl
|
||||
nsICategoryManager.idl
|
||||
nsICertificateDialogs.idl
|
||||
nsIChannel.idl
|
||||
nsIClassInfo.idl
|
||||
nsIClipboardCommands.idl
|
||||
nsIComponentManager.idl
|
||||
nsIComponentRegistrar.idl
|
||||
nsIContextMenuListener.idl
|
||||
nsICookie.idl
|
||||
nsICookieManager.idl
|
||||
nsICRLInfo.idl
|
||||
nsIDebug.idl
|
||||
nsIDirectoryService.idl
|
||||
nsIDOM3DocumentEvent.idl
|
||||
nsIDOM3EventTarget.idl
|
||||
nsIDOMAbstractView.idl
|
||||
nsIDOMAttr.idl
|
||||
nsIDOMBarProp.idl
|
||||
nsIDOMCDATASection.idl
|
||||
nsIDOMCharacterData.idl
|
||||
nsIDOMComment.idl
|
||||
nsIDOMCSSPrimitiveValue.idl
|
||||
nsIDOMCSSRule.idl
|
||||
nsIDOMCSSRuleList.idl
|
||||
nsIDOMCSSStyleDeclaration.idl
|
||||
nsIDOMCSSStyleSheet.idl
|
||||
nsIDOMCSSValue.idl
|
||||
nsIDOMCSSValueList.idl
|
||||
nsIDOMCustomEvent.idl
|
||||
nsIDOMDocument.idl
|
||||
nsIDOMDocumentEvent.idl
|
||||
nsIDOMDocumentFragment.idl
|
||||
nsIDOMDocumentRange.idl
|
||||
nsIDOMDocumentStyle.idl
|
||||
nsIDOMDocumentType.idl
|
||||
nsIDOMDocumentView.idl
|
||||
nsIDOMDOMException.idl
|
||||
nsIDOMDOMImplementation.idl
|
||||
nsIDOMElement.idl
|
||||
nsIDOMElementCSSInlineStyle.idl
|
||||
nsIDOMEntity.idl
|
||||
nsIDOMEntityReference.idl
|
||||
nsIDOMEvent.idl
|
||||
nsIDOMEventGroup.idl
|
||||
nsIDOMEventListener.idl
|
||||
nsIDOMEventTarget.idl
|
||||
nsIDOMHTMLAnchorElement.idl
|
||||
nsIDOMHTMLAppletElement.idl
|
||||
nsIDOMHTMLAreaElement.idl
|
||||
nsIDOMHTMLBaseElement.idl
|
||||
nsIDOMHTMLBaseFontElement.idl
|
||||
nsIDOMHTMLBodyElement.idl
|
||||
nsIDOMHTMLBRElement.idl
|
||||
nsIDOMHTMLButtonElement.idl
|
||||
nsIDOMHTMLCollection.idl
|
||||
nsIDOMHTMLDirectoryElement.idl
|
||||
nsIDOMHTMLDivElement.idl
|
||||
nsIDOMHTMLDListElement.idl
|
||||
nsIDOMHTMLDocument.idl
|
||||
nsIDOMHTMLElement.idl
|
||||
nsIDOMHTMLEmbedElement.idl
|
||||
nsIDOMHTMLFieldSetElement.idl
|
||||
nsIDOMHTMLFontElement.idl
|
||||
nsIDOMHTMLFormElement.idl
|
||||
nsIDOMHTMLFrameElement.idl
|
||||
nsIDOMHTMLFrameSetElement.idl
|
||||
nsIDOMHTMLHeadElement.idl
|
||||
nsIDOMHTMLHeadingElement.idl
|
||||
nsIDOMHTMLHRElement.idl
|
||||
nsIDOMHTMLHtmlElement.idl
|
||||
nsIDOMHTMLIFrameElement.idl
|
||||
nsIDOMHTMLImageElement.idl
|
||||
nsIDOMHTMLInputElement.idl
|
||||
nsIDOMHTMLIsIndexElement.idl
|
||||
nsIDOMHTMLLabelElement.idl
|
||||
nsIDOMHTMLLegendElement.idl
|
||||
nsIDOMHTMLLIElement.idl
|
||||
nsIDOMHTMLLinkElement.idl
|
||||
nsIDOMHTMLMapElement.idl
|
||||
nsIDOMHTMLMenuElement.idl
|
||||
nsIDOMHTMLMetaElement.idl
|
||||
nsIDOMHTMLModElement.idl
|
||||
nsIDOMHTMLObjectElement.idl
|
||||
nsIDOMHTMLOListElement.idl
|
||||
nsIDOMHTMLOptGroupElement.idl
|
||||
nsIDOMHTMLOptionElement.idl
|
||||
nsIDOMHTMLOptionsCollection.idl
|
||||
nsIDOMHTMLParagraphElement.idl
|
||||
nsIDOMHTMLParamElement.idl
|
||||
nsIDOMHTMLPreElement.idl
|
||||
nsIDOMHTMLQuoteElement.idl
|
||||
nsIDOMHTMLScriptElement.idl
|
||||
nsIDOMHTMLSelectElement.idl
|
||||
nsIDOMHTMLStyleElement.idl
|
||||
nsIDOMHTMLTableCaptionElem.idl
|
||||
nsIDOMHTMLTableCellElement.idl
|
||||
nsIDOMHTMLTableColElement.idl
|
||||
nsIDOMHTMLTableElement.idl
|
||||
nsIDOMHTMLTableRowElement.idl
|
||||
nsIDOMHTMLTableSectionElem.idl
|
||||
nsIDOMHTMLTextAreaElement.idl
|
||||
nsIDOMHTMLTitleElement.idl
|
||||
nsIDOMHTMLUListElement.idl
|
||||
nsIDOMMediaList.idl
|
||||
nsIDOMMouseEvent.idl
|
||||
nsIDOMNamedNodeMap.idl
|
||||
nsIDOMNode.idl
|
||||
nsIDOMNodeList.idl
|
||||
nsIDOMNotation.idl
|
||||
nsIDOMProcessingInstruction.idl
|
||||
nsIDOMRange.idl
|
||||
nsIDOMStorage.idl
|
||||
nsIDOMStorageEvent.idl
|
||||
nsIDOMStorageItem.idl
|
||||
nsIDOMStorageList.idl
|
||||
nsIDOMStorageWindow.idl
|
||||
nsIDOMStyleSheet.idl
|
||||
nsIDOMStyleSheetList.idl
|
||||
nsIDOMText.idl
|
||||
nsIDOMUIEvent.idl
|
||||
nsIDOMWindow.idl
|
||||
nsIDOMWindow2.idl
|
||||
nsIDOMWindowCollection.idl
|
||||
nsIDOMWindowUtils.idl
|
||||
nsIEmbeddingSiteWindow.idl
|
||||
nsIFactory.idl
|
||||
nsIFile.idl
|
||||
nsIFileURL.idl
|
||||
nsIGlobalHistory.idl
|
||||
nsIHashable.idl
|
||||
nsIHistoryEntry.idl
|
||||
nsIHttpChannel.idl
|
||||
nsIHttpHeaderVisitor.idl
|
||||
nsIInputStream.idl
|
||||
nsIInterfaceRequestor.idl
|
||||
nsIIOService.idl
|
||||
nsIJSON.idl
|
||||
nsILoadGroup.idl
|
||||
nsILocalFile.idl
|
||||
nsIMemory.idl
|
||||
nsIModule.idl
|
||||
nsIMutableArray.idl
|
||||
nsIObserver.idl
|
||||
nsIObserverService.idl
|
||||
nsIOutputStream.idl
|
||||
nsIPrefBranch.idl
|
||||
nsIPrefBranch2.idl
|
||||
nsIPrefLocalizedString.idl
|
||||
nsIPrefService.idl
|
||||
nsIProfile.idl
|
||||
nsIProfileChangeStatus.idl
|
||||
nsIProgrammingLanguage.idl
|
||||
nsIPromptService.idl
|
||||
nsIProperties.idl
|
||||
nsIProtocolHandler.idl
|
||||
nsIRequest.idl
|
||||
nsIRequestObserver.idl
|
||||
nsIScriptableInputStream.idl
|
||||
nsISecurityWarningDialogs.idl
|
||||
nsISelection.idl
|
||||
nsIServiceManager.idl
|
||||
nsISHistory.idl
|
||||
nsISHistoryListener.idl
|
||||
nsISimpleEnumerator.idl
|
||||
nsIStreamListener.idl
|
||||
nsISupports.idl
|
||||
nsISupportsPrimitives.idl
|
||||
nsITooltipListener.idl
|
||||
nsITooltipTextProvider.idl
|
||||
nsITraceRefcnt.idl
|
||||
nsIUnicharStreamListener.idl
|
||||
nsIUploadChannel.idl
|
||||
nsIURI.idl
|
||||
nsIURIContentListener.idl
|
||||
nsIURL.idl
|
||||
nsIWeakReference.idl
|
||||
nsIWebBrowser.idl
|
||||
nsIWebBrowserChrome.idl
|
||||
nsIWebBrowserChromeFocus.idl
|
||||
nsIWebBrowserFind.idl
|
||||
nsIWebBrowserFocus.idl
|
||||
nsIWebBrowserPrint.idl
|
||||
nsIWebBrowserSetup.idl
|
||||
nsIWebBrowserStream.idl
|
||||
nsIWebProgress.idl
|
||||
nsIWebProgressListener.idl
|
||||
nsIWindowCreator.idl
|
||||
nsIWindowWatcher.idl
|
||||
nsIX509Cert.idl
|
||||
nsIX509CertDB.idl
|
||||
nsIX509CertValidity.idl
|
||||
# nsrootidl.pas
|
||||
|
||||
# following idls are not FROZEN, but neccessary to make nsXPCOM.pas bacause
|
||||
# interfaces included in such idls are referenced by FROZEN interfaces.
|
||||
nsIDOMOfflineResourceList.idl
|
||||
nsIPrintSettings.idl
|
||||
nsIPrompt.idl
|
3870
components/geckoport/version2/each-version/nsXPCOM_safe17.pas
Normal file
3870
components/geckoport/version2/each-version/nsXPCOM_safe17.pas
Normal file
File diff suppressed because it is too large
Load Diff
3923
components/geckoport/version2/each-version/nsXPCOM_safe18.pas
Normal file
3923
components/geckoport/version2/each-version/nsXPCOM_safe18.pas
Normal file
File diff suppressed because it is too large
Load Diff
4075
components/geckoport/version2/each-version/nsXPCOM_safe19.pas
Normal file
4075
components/geckoport/version2/each-version/nsXPCOM_safe19.pas
Normal file
File diff suppressed because it is too large
Load Diff
3519
components/geckoport/version2/each-version/nsXPCOM_std17.pas
Normal file
3519
components/geckoport/version2/each-version/nsXPCOM_std17.pas
Normal file
File diff suppressed because it is too large
Load Diff
3567
components/geckoport/version2/each-version/nsXPCOM_std18.pas
Normal file
3567
components/geckoport/version2/each-version/nsXPCOM_std18.pas
Normal file
File diff suppressed because it is too large
Load Diff
3698
components/geckoport/version2/each-version/nsXPCOM_std19.pas
Normal file
3698
components/geckoport/version2/each-version/nsXPCOM_std19.pas
Normal file
File diff suppressed because it is too large
Load Diff
186
components/geckoport/version2/fpmake.pp
Normal file
186
components/geckoport/version2/fpmake.pp
Normal file
@ -0,0 +1,186 @@
|
||||
{$mode objfpc}{$H+}
|
||||
program fpmake;
|
||||
|
||||
{$IFDEF COMPILED_BY_FPPKG}
|
||||
{$IFNDEF HAS_PACKAGE_LAZMKUNIT}
|
||||
{$FATAL This package depends on the lazmkunit package which is not installed}
|
||||
{$ENDIF}
|
||||
{$ENDIF}
|
||||
|
||||
uses sysutils, lazmkunit, fpmkunit;
|
||||
|
||||
Var
|
||||
P : TLazPackage;
|
||||
T : TTarget;
|
||||
|
||||
begin
|
||||
With Installer(TLazInstaller) do
|
||||
begin
|
||||
P:=AddPackage('gecko') as TLazPackage;
|
||||
p.AfterInstall := @TLazInstaller(Installer).DoRegisterLazarusPackages;
|
||||
|
||||
P.Version:='0.9.0-1';
|
||||
P.OSes:=AllUnixOSes+[Win32,Win64];
|
||||
P.Author := 'Takanori Ito';
|
||||
P.License := 'MPL 1.1';
|
||||
P.HomepageURL := 'http://wiki.lazarus.freepascal.org/GeckoPort';
|
||||
P.Email := 'joshyfun@gmail.com';
|
||||
P.Description := 'Gecko headers and components to use Gecko in Free Pascal or Lazarus using XPCom.';
|
||||
P.Options.add('-Sm');
|
||||
P.Options.add('-Sd');
|
||||
|
||||
P.Dependencies.Add('lazmkunit');
|
||||
P.Dependencies.Add('fcl-registry',AllWindowsOSes);
|
||||
// Due to a bug in fpcmake, the dependencies of fcl-registry aren't processed
|
||||
P.Dependencies.Add('fcl-base',AllWindowsOSes);
|
||||
|
||||
P.Targets.AddUnit('nsTypes.pas');
|
||||
P.Targets.AddUnit('nsCID.pas');
|
||||
P.Targets.AddUnit('nsConsts.pas');
|
||||
|
||||
with P.Targets.AddUnit('nsGeckoStrings.pas') do
|
||||
begin
|
||||
Dependencies.AddUnit('nsInit');
|
||||
Dependencies.AddUnit('nsMemory');
|
||||
Dependencies.AddUnit('nsError');
|
||||
end;
|
||||
|
||||
with P.Targets.AddUnit('nsInit.pas') do
|
||||
begin
|
||||
Dependencies.AddUnit('nsXPCOM');
|
||||
Dependencies.AddUnit('nsConsts');
|
||||
Dependencies.AddUnit('nsTypes');
|
||||
Dependencies.AddUnit('nsGeckoStrings');
|
||||
end;
|
||||
|
||||
with P.Targets.AddUnit('nsXPCOM.pas') do
|
||||
begin
|
||||
Dependencies.AddUnit('nsGeckoStrings');
|
||||
Dependencies.AddUnit('nsTypes');
|
||||
end;
|
||||
|
||||
with P.Targets.AddUnit('nsError.pas') do
|
||||
begin
|
||||
Dependencies.AddUnit('nsTypes');
|
||||
end;
|
||||
|
||||
with P.Targets.AddUnit('nsErrorUtils.pas') do
|
||||
begin
|
||||
Dependencies.AddUnit('nsTypes');
|
||||
Dependencies.AddUnit('nsInit');
|
||||
Dependencies.AddUnit('nsXPCOMGlue');
|
||||
Dependencies.AddUnit('nsXPCOM');
|
||||
Dependencies.AddUnit('nsConsts');
|
||||
Dependencies.AddUnit('nsError');
|
||||
end;
|
||||
|
||||
with P.Targets.AddUnit('nsMemory.pas') do
|
||||
begin
|
||||
Dependencies.AddUnit('nsXPCOM');
|
||||
Dependencies.AddUnit('nsError');
|
||||
Dependencies.AddUnit('nsInit');
|
||||
end;
|
||||
|
||||
with P.Targets.AddUnit('nsXPCOMGlue.pas') do
|
||||
begin
|
||||
Dependencies.AddUnit('nsXPCOM');
|
||||
Dependencies.AddUnit('nsTypes');
|
||||
ResourceStrings := true;
|
||||
end;
|
||||
|
||||
// Is this unit used at all?!?
|
||||
with P.Targets.AddUnit('nsProfile.pas',AllWindowsOSes) do
|
||||
begin
|
||||
Dependencies.AddUnit('nsXPCOM');
|
||||
Dependencies.AddUnit('nsXPCOMGlue');
|
||||
Dependencies.AddUnit('nsTypes');
|
||||
end;
|
||||
|
||||
with P.Targets.AddUnit('nsEnumerators.pas') do
|
||||
begin
|
||||
Dependencies.AddUnit('nsTypes');
|
||||
Dependencies.AddUnit('nsXPCOM');
|
||||
Dependencies.AddUnit('nsXPCOM_std19');
|
||||
end;
|
||||
|
||||
with P.Targets.AddUnit('each-version\nsXPCOM_std19.pas') do
|
||||
begin
|
||||
Dependencies.AddUnit('nsTypes');
|
||||
Dependencies.AddUnit('nsGeckoStrings');
|
||||
end;
|
||||
|
||||
with P.Targets.AddUnit('nsNetUtil.pas') do
|
||||
begin
|
||||
Dependencies.AddUnit('nsTypes');
|
||||
Dependencies.AddUnit('nsXPCOM');
|
||||
Dependencies.AddUnit('nsGeckoStrings');
|
||||
Dependencies.AddUnit('nsConsts');
|
||||
Dependencies.AddUnit('nsXPCOMGlue');
|
||||
Dependencies.AddUnit('nsError');
|
||||
Dependencies.AddUnit('nsInit');
|
||||
ResourceStrings := true;
|
||||
end;
|
||||
|
||||
with P.Targets.AddUnit('nsStream.pas') do
|
||||
begin
|
||||
Dependencies.AddUnit('nsTypes');
|
||||
Dependencies.AddUnit('nsXPCOM');
|
||||
Dependencies.AddUnit('nsError');
|
||||
end;
|
||||
|
||||
with P.Targets.AddUnit('nsXRE.pas') do
|
||||
begin
|
||||
Dependencies.AddUnit('nsTypes');
|
||||
Dependencies.AddUnit('nsXPCOM');
|
||||
Dependencies.AddUnit('nsGeckoStrings');
|
||||
Dependencies.AddUnit('nsError');
|
||||
Dependencies.AddUnit('nsInit');
|
||||
end;
|
||||
|
||||
{ with P.Targets.AddUnit('nsThreadUtil.pas') do
|
||||
begin
|
||||
Dependencies.AddUnit('nsTypes');
|
||||
Dependencies.AddUnit('nsXPCOM');
|
||||
Dependencies.AddUnit('nsGeckoStrings');
|
||||
Dependencies.AddUnit('nsError');
|
||||
end;}
|
||||
|
||||
{ with P.Targets.AddUnit('each-version\nsXPCOM_safe19.pas') do
|
||||
begin
|
||||
Dependencies.AddUnit('nsTypes');
|
||||
Dependencies.AddUnit('nsConsts');
|
||||
Dependencies.AddUnit('nsGeckoStrings');
|
||||
end;}
|
||||
|
||||
P.Targets.AddExampleProgram('SampleApps/ChromeWin.dpr');
|
||||
P.Sources.AddExample('SampleApps/ChromeWin.dpr','examples');
|
||||
P.Sources.AddExample('SampleApps/ChromeWin.lpi','examples');
|
||||
P.Sources.AddExample('SampleApps/gec10.pas','examples');
|
||||
P.Sources.AddExample('SampleApps/gec10.lfm','examples');
|
||||
P.Sources.AddExample('SampleApps/lb-cw-cocoa.sh','examples');
|
||||
P.Sources.AddExample('SampleApps/lb-gb-cocoa.sh','examples');
|
||||
P.Sources.AddExample('SampleApps/run-bw-mac.sh','examples');
|
||||
P.Sources.AddExample('SampleApps/run-cw-mac.sh','examples');
|
||||
P.Sources.AddExample('SampleApps/run-gb-mac.sh','examples');
|
||||
P.Sources.AddExample('SampleApps/GBrowser.lpi','examples');
|
||||
P.Sources.AddExample('SampleApps/GBrowser.dpr','examples');
|
||||
|
||||
P.LazPackageFiles.AddLazPackageTemplate('Components/GeckoComponents.template');
|
||||
P.LazPackageFiles.AddLazFile('Components/BrowserSupports.pas');
|
||||
P.LazPackageFiles.AddLazFile('Components/CallbackInterfaces.pas');
|
||||
P.LazPackageFiles.AddLazFile('Components/GeckoBrowser.pas');
|
||||
P.LazPackageFiles.AddLazFile('Components/GeckoBrowser.lrs');
|
||||
P.LazPackageFiles.AddLazFile('Components/GeckoChromeWindow.pas');
|
||||
P.LazPackageFiles.AddLazFile('Components/GeckoChromeWindow.lfm');
|
||||
P.LazPackageFiles.AddLazFile('Components/GeckoChromeWindow.lrs');
|
||||
P.LazPackageFiles.AddLazFile('Components/GeckoComponents.pas');
|
||||
P.LazPackageFiles.AddLazFile('Components/GeckoDirectoryService.pas');
|
||||
P.LazPackageFiles.AddLazFile('Components/GeckoInit.pas');
|
||||
P.LazPackageFiles.AddLazFile('Components/GeckoSimpleProfile.pas');
|
||||
P.LazPackageFiles.AddLazFile('Components/geckoresources.rc');
|
||||
P.LazPackageFiles.AddLazFile('Components/geckologo.png');
|
||||
|
||||
Run;
|
||||
end;
|
||||
end.
|
||||
|
235
components/geckoport/version2/nsCID.pas
Normal file
235
components/geckoport/version2/nsCID.pas
Normal file
@ -0,0 +1,235 @@
|
||||
(* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla 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/MPL/
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* The Initial Developer of the Original Code is
|
||||
* Netscape Communications Corporation.
|
||||
* Portions created by the Initial Developer are Copyright (C) 1998
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
* Takanori Itou <necottie@nesitive.net>
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** *)
|
||||
unit nsCID;
|
||||
|
||||
interface
|
||||
|
||||
const
|
||||
(*
|
||||
* Original code: xpcom/build/nsXPCOMCID.h.
|
||||
*)
|
||||
|
||||
(**
|
||||
* XPCOM Directory Service Contract ID
|
||||
* The directory service provides ways to obtain file system locations. The
|
||||
* directory service is a singleton.
|
||||
*
|
||||
* This contract supports the nsIDirectoryService and the nsIProperties
|
||||
* interfaces.
|
||||
*
|
||||
*)
|
||||
NS_DIRECTORY_SERVICE_CONTRACTID = '@mozilla.org/file/directory_service;1';
|
||||
|
||||
(**
|
||||
* XPCOM File
|
||||
* The file abstraction provides ways to obtain and access files and
|
||||
* directories located on the local system.
|
||||
*
|
||||
* This contract supports the nsIFile interface and the nsILocalFile interface.
|
||||
* This contract may also support platform specific interfaces such as
|
||||
* nsILocalFileMac on platforms where additional interfaces are required.
|
||||
*
|
||||
*)
|
||||
NS_LOCAL_FILE_CONTRACTID = '@mozilla.org/file/local;1';
|
||||
|
||||
(**
|
||||
* XPCOM Category Manager Contract ID
|
||||
* The contract supports the nsICategoryManager interface. The
|
||||
* category manager is a singleton.
|
||||
*)
|
||||
NS_CATEGORYMANAGER_CONTRACTID = '@mozilla.org/categorymanager;1';
|
||||
|
||||
(**
|
||||
* XPCOM Properties Object Contract ID
|
||||
* Simple mapping object which supports the nsIProperties interface.
|
||||
*)
|
||||
NS_PROPERTIES_CONTRACTID = '@mozilla.org/properties;1';
|
||||
|
||||
(**
|
||||
* XPCOM Array Object ContractID
|
||||
* Simple array implementation which supports the nsIArray and
|
||||
* nsIMutableArray interfaces.
|
||||
*)
|
||||
NS_ARRAY_CONTRACTID = '@mozilla.org/array;1';
|
||||
|
||||
(**
|
||||
* The following are the CIDs and Contract IDs of the nsISupports wrappers for
|
||||
* primative types.
|
||||
*)
|
||||
NS_SUPPORTS_ID_CID: TGUID = '{acf8dc40-4a25-11d3-9890-006008962422}';
|
||||
NS_SUPPORTS_ID_CONTRACTID = '@mozilla.org/supports-id;1';
|
||||
|
||||
NS_SUPPORTS_CSTRING_CID: TGUID = '{acf8dc41-4a25-11d3-9890-006008962422}';
|
||||
NS_SUPPORTS_CSTRING_CONTRACTID = '@mozilla.org/supports-cstring;1';
|
||||
|
||||
NS_SUPPORTS_STRING_CID: TGUID = '{acf8dc42-4a25-11d3-9890-006008962422}';
|
||||
NS_SUPPORTS_STRING_CONTRACTID = '@mozilla.org/supports-string;1';
|
||||
|
||||
NS_SUPPORTS_PRBOOL_CID: TGUID = '{acf8dc43-4a25-11d3-9890-006008962422}';
|
||||
NS_SUPPORTS_PRBOOL_CONTRACTID = '@mozilla.org/supports-PRBool;1';
|
||||
|
||||
NS_SUPPORTS_PRUINT8_CID: TGUID = '{acf8dc44-4a25-11d3-9890-006008962422}';
|
||||
NS_SUPPORTS_PRUINT8_CONTRACTID = '@mozilla.org/supports-PRUint8;1';
|
||||
|
||||
NS_SUPPORTS_PRUINT16_CID: TGUID = '{acf8dc46-4a25-11d3-9890-006008962422}';
|
||||
NS_SUPPORTS_PRUINT16_CONTRACTID = '@mozilla.org/supports-PRUint16;1';
|
||||
|
||||
NS_SUPPORTS_PRUINT32_CID: TGUID = '{acf8dc47-4a25-11d3-9890-006008962422}';
|
||||
NS_SUPPORTS_PRUINT32_CONTRACTID = '@mozilla.org/supports-PRUint32;1';
|
||||
|
||||
NS_SUPPORTS_PRUINT64_CID: TGUID = '{acf8dc48-4a25-11d3-9890-006008962422}';
|
||||
NS_SUPPORTS_PRUINT64_CONTRACTID = '@mozilla.org/supports-PRUint64;1';
|
||||
|
||||
NS_SUPPORTS_PRTIME_CID: TGUID = '{acf8dc49-4a25-11d3-9890-006008962422}';
|
||||
NS_SUPPORTS_PRTIME_CONTRACTID = '@mozilla.org/supports-PRTime;1';
|
||||
|
||||
NS_SUPPORTS_CHAR_CID: TGUID = '{acf8dc4a-4a25-11d3-9890-006008962422}';
|
||||
NS_SUPPORTS_CHAR_CONTRACTID = '@mozilla.org/supports-char;1';
|
||||
|
||||
NS_SUPPORTS_PRINT16_CID: TGUID = '{acf8dc4b-4a25-11d3-9890-006008962422}';
|
||||
NS_SUPPORTS_PRINT16_CONTRACTID = '@mozilla.org/supports-PRInt16;1';
|
||||
|
||||
NS_SUPPORTS_PRINT32_CID: TGUID = '{acf8dc4c-4a25-11d3-9890-006008962422}';
|
||||
NS_SUPPORTS_PRINT32_CONTRACTID = '@mozilla.org/supports-PRInt32;1';
|
||||
|
||||
NS_SUPPORTS_PRINT64_CID: TGUID = '{acf8dc4d-4a25-11d3-9890-006008962422}';
|
||||
NS_SUPPORTS_PRINT64_CONTRACTID = '@mozilla.org/supports-PRInt64;1';
|
||||
|
||||
NS_SUPPORTS_FLOAT_CID: TGUID = '{cbf86870-4ac0-11d3-baea-00805f8a5dd7}';
|
||||
NS_SUPPORTS_FLOAT_CONTRACTID = '@mozilla.org/supports-float;1';
|
||||
|
||||
NS_SUPPORTS_DOUBLE_CID: TGUID = '{cbf86871-4ac0-11d3-baea-00805f8a5dd7}';
|
||||
NS_SUPPORTS_DOUBLE_CONTRACTID = '@mozilla.org/supports-double;1';
|
||||
|
||||
NS_SUPPORTS_VOID_CID: TGUID = '{af10f3e0-568d-11d3-baf8-00805f8a5dd7}';
|
||||
NS_SUPPORTS_VOID_CONTRACTID = '@mozilla.org/supports-void;1';
|
||||
|
||||
NS_SUPPORTS_INTERFACE_POINTER_CID: TGUID = '{A99FEBBA-1DD1-11B2-A943-B02334A6D083}';
|
||||
NS_SUPPORTS_INTERFACE_POINTER_CONTRACTID = '@mozilla.org/supports-interface-pointer;1';
|
||||
|
||||
(**
|
||||
* nsHashPropertyBag impl of nsIWritablePropertyBag
|
||||
*)
|
||||
NS_HASH_PROPERTY_BAG_CID: TGUID = '{678c50b8-6bcb-4ad0-b9b8-c81175955199}';
|
||||
NS_HASH_PROPERTY_BAG_CONSTRACTID = '@mozilla.org/hash-property-bag;1';
|
||||
|
||||
(*
|
||||
* Original code: xpcom/glue/nsIGenericFactory.h.
|
||||
*)
|
||||
// nsIGenericFactory
|
||||
NS_GENERICFACTORY_CID: TGUID = '{3bc97f01-ccdf-11d2-bab8-b548654461fc}';
|
||||
NS_IGENERICFACTORY_CID: TGUID = '{3bc97f00-ccdf-11d2-bab8-b548654461fc}';
|
||||
NS_GENERICFACTORY_CONTRACTID = '@mozilla.org/generic-factory;1';
|
||||
NS_GENERICFACTORY_CLASSNAME = 'Generic Factory';
|
||||
|
||||
(*
|
||||
* Original code: docshell/base/nsIGlobalHistory.idl.
|
||||
*)
|
||||
// nsIGlobalHistory
|
||||
NS_GLOBALHISTORY_CONTRACTID = '@mozilla.org/browser/global-history;1';
|
||||
|
||||
(*
|
||||
* Original code: modules/libpref/public/nsIPrefBranch.idl.
|
||||
*)
|
||||
// nsIPrefBranch
|
||||
NS_PREFBRANCH_CONTRACTID = '@mozilla.org/preferencesbranch;1';
|
||||
NS_PREFBRANCH_CLASSNAME = 'Preferences Branch';
|
||||
|
||||
(*
|
||||
* Original code: modules/libpref/public/nsIPrefLocalizedString.idl
|
||||
*)
|
||||
NS_PREFLOCALIZEDSTRING_CID: TGUID ='{064d9cee-1dd2-11b2-83e3-d25ab0193c26}';
|
||||
NS_PREFLOCALIZEDSTRING_CONTRACTID = '@mozilla.org/pref-localizedstring;1';
|
||||
NS_PREFLOCALIZEDSTRING_CLASSNAME = 'Pref LocalizedString';
|
||||
|
||||
(*
|
||||
* Original code: modules/libpref/public/nsIPrefService.idl
|
||||
*)
|
||||
// nsIPrefService
|
||||
NS_PREFSERVICE_CID: TGUID ='{1cd91b88-1dd2-11b2-92e1-ed22ed298000}';
|
||||
NS_PREFSERVICE_CONTRACTID = '@mozilla.org/preferences-service;1';
|
||||
NS_PREFSERVICE_CLASSNAME = 'Preferences Server';
|
||||
(**
|
||||
* Notification sent before reading the default user preferences files.
|
||||
*)
|
||||
NS_PREFSERVICE_READ_TOPIC_ID = 'prefservice:before-read-userprefs';
|
||||
(**
|
||||
* Notification sent when resetPrefs has been called, but before the actual
|
||||
* reset process occurs.
|
||||
*)
|
||||
NS_PREFSERVICE_RESET_TOPIC_ID = 'prefservice:before-reset';
|
||||
|
||||
(*
|
||||
* Original code: profile/public/nsIProfile.idl
|
||||
*)
|
||||
// nsIProfile
|
||||
NS_PROFILE_CID: TGUID = '{02b0625b-e7f3-11d2-9f5a-006008a6efe9}';
|
||||
NS_PROFILE_CONTRACTID = '@mozilla.org/profile/manager;1';
|
||||
NS_PROFILE_STARTUP_CATEGORY = 'profile-startup-category';
|
||||
|
||||
// nsIProtocolHandler
|
||||
(**
|
||||
* Protocol handlers are registered with XPCOM under the following CONTRACTID prefix:
|
||||
*)
|
||||
NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX = '@mozilla.org/network/protocol;1?name=';
|
||||
(**
|
||||
* For example, "@mozilla.org/network/protocol;1?name=http"
|
||||
*)
|
||||
|
||||
(*
|
||||
* Original code: xpfe/components/shistory/public/nsISHistory.idl
|
||||
*)
|
||||
// nsISHistory
|
||||
NS_SHISTORY_CID: TGUID = '{7294fe9c-14d8-11d5-9882-00C04fa02f40}';
|
||||
NS_SHISTORY_CONTRACTID = '@mozilla.org/browser/shistory;1';
|
||||
|
||||
(*
|
||||
* Original code: xpfe/components/shistory/public/nsISHistoryListener.idl
|
||||
*)
|
||||
// nsISHistoryListener
|
||||
NS_SHISTORYLISTENER_CONTRACTID = '@mozilla.org/browser/shistorylistener;1';
|
||||
|
||||
(*
|
||||
* Original code: embedding/components/windowwatcher/public/nsIWindowWatcher.idl
|
||||
*)
|
||||
// nsIWindowWatcher
|
||||
NS_WINDOWWATCHER_IID: TGUID = '{002286a8-494b-43b3-8ddd-49e3fc50622b}';
|
||||
NS_WINDOWWATCHER_CONTRACTID = '@mozilla.org/embedcomp/window-watcher;1';
|
||||
|
||||
implementation
|
||||
|
||||
end.
|
90
components/geckoport/version2/nsConsts.pas
Normal file
90
components/geckoport/version2/nsConsts.pas
Normal file
@ -0,0 +1,90 @@
|
||||
(* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla 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/MPL/
|
||||
*
|
||||
* 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 GeckoSDK for Delphi.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Takanori Ito.
|
||||
* Portions created by the Initial Developer are Copyright (C) 2004
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** *)
|
||||
unit nsConsts;
|
||||
|
||||
interface
|
||||
|
||||
const
|
||||
{$IFDEF MSWINDOWS}
|
||||
XPCOM_DLL = 'xpcom.dll';
|
||||
XUL_DLL = 'xul.dll';
|
||||
{$ENDIF}
|
||||
{$IFDEF UNIX}
|
||||
XPCOM_DLL = 'libxpcom.so';
|
||||
XUL_DLL = 'libxul.so';
|
||||
{$ENDIF}
|
||||
|
||||
const
|
||||
GRE_MOZILLA_WIN_REG_LOC = 'Software\mozilla.org\GRE\';
|
||||
GRE_FIREFOX_BASE_WIN_REG_LOC = 'SOFTWARE\Mozilla\Mozilla Firefox';
|
||||
|
||||
// 1.7 Release
|
||||
MOZILLA_VERSION = 1.7;
|
||||
GRE_BUILD_ID = '1.7_2004061609';
|
||||
NS_BUILD_ID = 2004061609;
|
||||
|
||||
// 1.7.1 Release
|
||||
//MOZILLA_VERSION = 1.7;
|
||||
//GRE_BUILD_ID = '1.7.1_2004070721';
|
||||
//NS_BUILD_ID = 2004070721;
|
||||
|
||||
// 1.7.2 Release
|
||||
//MOZILLA_VERSION = 1.7;
|
||||
//GRE_BUILD_ID = '1.7.2_2004080302';
|
||||
//NS_BUILD_ID = 2004080302;
|
||||
|
||||
// 1.7.3 Release
|
||||
//MOZILLA_VERSION = 1.7;
|
||||
//GRE_BUILD_ID = '1.7.3_2004091008';
|
||||
//NS_BUILD_ID = 2004091008;
|
||||
|
||||
// 1.7.5 Release
|
||||
//MOZILLA_VERSION = 1.7;
|
||||
//GRE_BUILD_ID = '1.7.5_2004122323';
|
||||
//NS_BUILD_ID = 2004122323;
|
||||
|
||||
// 1.7.6 Release
|
||||
//MOZILLA_VERSION = 1.7;
|
||||
//GRE_BUILD_ID = '1.7.6_2005031907';
|
||||
//NS_BUILD_ID = 2005031907;
|
||||
|
||||
// 1.7.7 Release
|
||||
//MOZILLA_VERSION = 1.7;
|
||||
//GRE_BUILD_ID = '1.7.7_2005041417';
|
||||
//NS_BUILD_ID = 2005041417;
|
||||
|
||||
implementation
|
||||
|
||||
end.
|
72
components/geckoport/version2/nsEnumerators.pas
Executable file
72
components/geckoport/version2/nsEnumerators.pas
Executable file
@ -0,0 +1,72 @@
|
||||
unit nsEnumerators;
|
||||
|
||||
{$MACRO on}
|
||||
|
||||
{$IFDEF Windows}
|
||||
{$DEFINE extdecl:=stdcall}
|
||||
{$ELSE Windows}
|
||||
{$DEFINE extdecl:=cdecl}
|
||||
{$ENDIF}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
nsXPCOM, nsTypes, Classes;
|
||||
|
||||
function NewSimpleEnumeratorFromTInterfaceList(AList: TInterfaceList;
|
||||
AOwn: Boolean = True): nsISimpleEnumerator;
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
nsXPCOM_std19, nsError;
|
||||
|
||||
type
|
||||
TSimpleEnumeratorWithInterfaceList = class(TInterfacedObject,
|
||||
nsISimpleEnumerator_std19)
|
||||
FList: TInterfaceList;
|
||||
FOwn: Boolean;
|
||||
FIndex: Integer;
|
||||
destructor Destroy; override;
|
||||
function HasMoreElements(out _retval: PRBool): nsresult; extdecl;
|
||||
function GetNext(out _retval: nsISupports_std19): nsresult; extdecl;
|
||||
end;
|
||||
|
||||
function NewSimpleEnumeratorFromTInterfaceList(AList: TInterfaceList;
|
||||
AOwn: Boolean = True): nsISimpleEnumerator;
|
||||
var
|
||||
enum: TSimpleEnumeratorWithInterfaceList;
|
||||
begin
|
||||
enum := TSimpleEnumeratorWithInterfaceList.Create;
|
||||
enum.FList := AList;
|
||||
enum.FOwn := AOwn;
|
||||
Result := enum as nsISimpleEnumerator;
|
||||
end;
|
||||
|
||||
destructor TSimpleEnumeratorWithInterfaceList.Destroy;
|
||||
begin
|
||||
if FOwn then
|
||||
FList.Free;
|
||||
|
||||
inherited;
|
||||
end;
|
||||
|
||||
function TSimpleEnumeratorWithInterfaceList.HasMoreElements(out _retval
|
||||
: PRBool): nsresult;
|
||||
begin
|
||||
_retval := (FIndex < FList.Count);
|
||||
Result := NS_OK;
|
||||
end;
|
||||
|
||||
function TSimpleEnumeratorWithInterfaceList.GetNext(out _retval
|
||||
: nsISupports_std19): nsresult;
|
||||
begin
|
||||
if (FIndex < FList.Count) then
|
||||
begin
|
||||
Result := FList.Items[FIndex].QueryInterface(nsISupports_std19, _retval);
|
||||
Inc(FIndex);
|
||||
end else
|
||||
Result := NS_ERROR_FAILURE;
|
||||
end;
|
||||
|
||||
end.
|
173
components/geckoport/version2/nsError.pas
Normal file
173
components/geckoport/version2/nsError.pas
Normal file
@ -0,0 +1,173 @@
|
||||
(* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla 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/MPL/
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* The Initial Developer of the Original Code is
|
||||
* Netscape Communications Corporation.
|
||||
* Portions created by the Initial Developer are Copyright (C) 1998
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
* Takanori Itou <necottie@nesitive.net>
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** *)
|
||||
unit nsError;
|
||||
|
||||
interface
|
||||
|
||||
uses nsTypes;
|
||||
|
||||
const
|
||||
(*
|
||||
* Original code: xpcom/base/nsError.h
|
||||
*)
|
||||
|
||||
(**
|
||||
* @name Standard Module Offset Code. Each Module should identify a unique number
|
||||
* and then all errors associated with that module become offsets from the
|
||||
* base associated with that module id. There are 16 bits of code bits for
|
||||
* each module.
|
||||
*)
|
||||
NS_ERROR_MODULE_XPCOM = 1;
|
||||
NS_ERROR_MODULE_BASE = 2;
|
||||
NS_ERROR_MODULE_GFX = 3;
|
||||
NS_ERROR_MODULE_WIDGET = 4;
|
||||
NS_ERROR_MODULE_CALENDER = 5;
|
||||
NS_ERROR_MODULE_NETWORK = 6;
|
||||
NS_ERROR_MODULE_PLUGINS = 7;
|
||||
NS_ERROR_MODULE_LAYOUT = 8;
|
||||
NS_ERROR_MODULE_HTMLPARSER = 9;
|
||||
NS_ERROR_MODULE_RDF = 10;
|
||||
NS_ERROR_MODULE_UCONV = 11;
|
||||
NS_ERROR_MODULE_REG = 12;
|
||||
NS_ERROR_MODULE_FILES = 13;
|
||||
NS_ERROR_MODULE_DOM = 14;
|
||||
NS_ERROR_MODULE_IMGLIB = 15;
|
||||
NS_ERROR_MODULE_MAILNEWS = 16;
|
||||
NS_ERROR_MODULE_ERITOR = 17;
|
||||
NS_ERROR_MODULE_XPCONNECT = 18;
|
||||
NS_ERROR_MODULE_PROFILE = 19;
|
||||
NS_ERROR_MODULE_LDAP = 20;
|
||||
NS_ERROR_MODULE_SECURITY = 21;
|
||||
NS_ERROR_MODULE_DOM_XPATH = 22;
|
||||
NS_ERROR_MODULE_DOM_RANGE = 23;
|
||||
NS_ERROR_MODULE_URILOADER = 24;
|
||||
NS_ERROR_MODULE_CONTENT = 25;
|
||||
NS_ERROR_MODULE_PYXPCOM = 26;
|
||||
NS_ERROR_MODULE_XSLT = 27;
|
||||
NS_ERROR_MODULE_IPC = 28;
|
||||
NS_ERROR_MODULE_SVG = 29;
|
||||
NS_ERROR_MODULE_STORAGE = 30;
|
||||
NS_ERROR_MODULE_SCHEMA = 31;
|
||||
|
||||
NS_ERROR_MODULE_GENERAL = 51;
|
||||
|
||||
(**
|
||||
* @name Severity Code. This flag identifies the level of warning
|
||||
*)
|
||||
NS_ERROR_SEVERITY_SUCCESS = 0;
|
||||
NS_ERROR_SEVERITY_ERROR = 1;
|
||||
|
||||
NS_OK = 0;
|
||||
|
||||
NS_ERROR_BASE = nsresult($c1f30000);
|
||||
NS_ERROR_NOT_INITIALIZED = nsresult($c1f30001);
|
||||
NS_ERROR_ALREADY_INITIALIZED = nsresult($c1f30002);
|
||||
NS_ERROR_NOT_IMPLEMENTED = nsresult($80004001);
|
||||
NS_ERROR_NOINTERFACE = nsresult($80004002);
|
||||
NS_ERROR_NO_INTERFACE = nsresult($80004002);
|
||||
NS_ERROR_INVALID_POINTER = nsresult($80004003);
|
||||
NS_ERROR_NULL_POINTER = nsresult($80004003);
|
||||
NS_ERROR_ABORT = nsresult($80004004);
|
||||
NS_ERROR_FAILURE = nsresult($80004005);
|
||||
NS_ERROR_UNEXPECTED = nsresult($8000ffff);
|
||||
NS_ERROR_OUT_OF_MEMORY = nsresult($8007000e);
|
||||
NS_ERROR_ILLEGAL_VALUE = nsresult($80070057);
|
||||
NS_ERROR_INVALID_ARG = nsresult($80070057);
|
||||
NS_ERROR_NO_AGGREGATION = nsresult($80040110);
|
||||
NS_ERROR_NOT_AVAILABLE = nsresult($80040111);
|
||||
NS_ERROR_FACTORY_NOT_REGISTERED = nsresult($80040154);
|
||||
NS_ERROR_FACTORY_REGISTER_AGAIN = nsresult($80040155);
|
||||
NS_ERROR_FACTORY_NOT_LOADED = nsresult($800401f8);
|
||||
NS_ERROR_FACTORY_NO_SIGNATURE_SUPPORT = nsresult($c1f30101);
|
||||
NS_ERROR_FACTORY_EXISTS = nsresult($c1f30100);
|
||||
NS_ERROR_PROXY_INVALID_IN_PARAMETER = nsresult($80010010);
|
||||
NS_ERROR_PROXY_INVALID_OUT_PARAMETER = nsresult($80010011);
|
||||
|
||||
NS_BASE_STREAM_CLOSED = nsresult($80470002);
|
||||
NS_BASE_STREAM_OSERROR = nsresult($80470003);
|
||||
NS_BASE_STREAM_ILLEGAL_ARGS = nsresult($80470004);
|
||||
NS_BASE_STREAM_NO_CONVERTER = nsresult($80470005);
|
||||
NS_BASE_STREAM_BAD_CONVERSION = nsresult($80470006);
|
||||
NS_BASE_STREAM_WOULD_BLOCK = nsresult($80470007);
|
||||
|
||||
NS_ERROR_FILE_UNRECOGNIZED_PATH = nsresult($80480001);
|
||||
NS_ERROR_FILE_UNRESOLVABLE_SYMLINK = nsresult($80480002);
|
||||
NS_ERROR_FILE_EXECUTION_FAILED = nsresult($80480003);
|
||||
NS_ERROR_FILE_UNKNOWN_TYPE = nsresult($80480004);
|
||||
NS_ERROR_FILE_DESTINATION_NOT_DIR = nsresult($80480005);
|
||||
NS_ERROR_FILE_TARGET_DOES_NOT_EXIST = nsresult($80480006);
|
||||
NS_ERROR_FILE_COPY_OR_MOVE_FAILED = nsresult($80480007);
|
||||
NS_ERROR_FILE_ALREADY_EXISTS = nsresult($80480008);
|
||||
NS_ERROR_FILE_INVALID_PATH = nsresult($80480009);
|
||||
NS_ERROR_FILE_DISK_FULL = nsresult($8048000A);
|
||||
NS_ERROR_FILE_CORRUPTED = nsresult($8048000B);
|
||||
NS_ERROR_FILE_NOT_DIRECTORY = nsresult($8048000C);
|
||||
NS_ERROR_FILE_IS_DIRECTORY = nsresult($8048000D);
|
||||
NS_ERROR_FILE_IS_LOCKED = nsresult($8048000E);
|
||||
NS_ERROR_FILE_TOO_BIG = nsresult($8048000F);
|
||||
NS_ERROR_FILE_NO_DEVICE_SPACE = nsresult($80480010);
|
||||
NS_ERROR_FILE_NAME_TOO_LONG = nsresult($80480011);
|
||||
NS_ERROR_FILE_NOT_FOUND = nsresult($80480012);
|
||||
NS_ERROR_FILE_READ_ONLY = nsresult($80480013);
|
||||
NS_ERROR_FILE_DIR_NOT_EMPTY = nsresult($80480014);
|
||||
NS_ERROR_FILE_ACCESS_DENIED = nsresult($80480015);
|
||||
|
||||
NS_ERROR_CANNOT_CONVERT_DATA = nsresult($80460001);
|
||||
NS_ERROR_OBJECT_IS_IMMUTABLE = nsresult($80460002);
|
||||
NS_ERROR_LOSS_OF_SIGNIFICANT_DATA = nsresult($80460003);
|
||||
NS_SUCCESS_LOSS_OF_INSIGNIFICANT_DATA = nsresult($00460003);
|
||||
|
||||
(*
|
||||
* @name Standard Error Handling Macros
|
||||
*)
|
||||
|
||||
function NS_FAILED(rv: nsresult): Boolean;
|
||||
function NS_SUCCEEDED(rv: nsresult): Boolean;
|
||||
|
||||
implementation
|
||||
|
||||
function NS_FAILED(rv: nsresult): Boolean;
|
||||
begin
|
||||
Result := (rv and $80000000) <> 0;
|
||||
end;
|
||||
|
||||
function NS_SUCCEEDED(rv: nsresult): Boolean;
|
||||
begin
|
||||
Result := (rv and $80000000) = 0;
|
||||
end;
|
||||
|
||||
end.
|
103
components/geckoport/version2/nsErrorUtils.pas
Normal file
103
components/geckoport/version2/nsErrorUtils.pas
Normal file
@ -0,0 +1,103 @@
|
||||
unit nsErrorUtils;
|
||||
|
||||
{$MACRO on}
|
||||
|
||||
{$IFDEF Windows}
|
||||
{$DEFINE extdecl:=stdcall}
|
||||
{$ELSE Windows}
|
||||
{$DEFINE extdecl:=cdecl}
|
||||
{$ENDIF}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
nsTypes;
|
||||
|
||||
function NS_GetErrorStringBundle(aErrorModule: PRInt16): AnsiString;
|
||||
function NS_GetErrorStringBundleKey(aError: nsresult): AnsiString;
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
nsXPCOMGlue, nsXPCOM, nsError;
|
||||
|
||||
type
|
||||
nsIErrorService = interface;
|
||||
|
||||
nsIErrorService = interface(nsISupports)
|
||||
['{e72f94b2-5f85-11d4-9877-00c04fa0cf4a}']
|
||||
function registerErrorStringBundle(
|
||||
aErrorModule: PRInt16;
|
||||
aStringBundleURL: PAnsiChar): nsresult; extdecl;
|
||||
function unregisterErrorStringBundle(
|
||||
aErrorModule: PRInt16): nsresult; extdecl;
|
||||
function getErrorStringBundle(
|
||||
aErrorModule: PRInt16;
|
||||
out aResult: PAnsiChar): nsresult; extdecl;
|
||||
function registerErrorStringBundleKey(
|
||||
aError: nsresult;
|
||||
aStringBundleKey: PAnsiChar): nsresult; extdecl;
|
||||
function unregisterErrorStringBundleKey(
|
||||
aError: nsresult): nsresult; extdecl;
|
||||
function getErrorStringBundleKey(
|
||||
aError: nsresult;
|
||||
out aResult: PAnsiChar): nsresult; extdecl;
|
||||
end;
|
||||
|
||||
const
|
||||
NS_IERRORSERVICE_CID: TGUID = '{e72f94b2-5f85-11d4-9877-00c04fa0cf4a}';
|
||||
NS_ERRORSERVICE_NAME = 'Error Service';
|
||||
NS_ERRORSERVICE_CONTRACTID = '@mozilla.org/xpcom/error-service;1';
|
||||
NS_ERRORSERVICE_CID: TGUID = '{744afd5e-5f8c-11d4-9877-00c04fa0cf4a}';
|
||||
|
||||
var
|
||||
sErrorService: nsIErrorService = nil;
|
||||
|
||||
function ENSURE_ErrorService(): nsIErrorService;
|
||||
var
|
||||
es: nsIErrorService;
|
||||
begin
|
||||
if not Assigned(sErrorService) then
|
||||
begin
|
||||
try
|
||||
NS_GetService(NS_ERRORSERVICE_CONTRACTID, nsIErrorService, es);
|
||||
sErrorService := es;
|
||||
except
|
||||
end;
|
||||
end;
|
||||
Result := sErrorService;
|
||||
end;
|
||||
|
||||
function NS_GetErrorStringBundle(aErrorModule: PRInt16): AnsiString;
|
||||
var
|
||||
es: nsIErrorService;
|
||||
rv: nsresult;
|
||||
str: PAnsiChar;
|
||||
begin
|
||||
es := ENSURE_ErrorService();
|
||||
if Assigned(es) then
|
||||
begin
|
||||
rv := es.getErrorStringBundle(aErrorModule, str);
|
||||
if NS_SUCCEEDED(rv) then
|
||||
Result := str;
|
||||
end;
|
||||
end;
|
||||
|
||||
function NS_GetErrorStringBundleKey(aError: nsresult): AnsiString;
|
||||
var
|
||||
es: nsIErrorService;
|
||||
rv: nsresult;
|
||||
str: PAnsiChar;
|
||||
begin
|
||||
es := ENSURE_ErrorService();
|
||||
if Assigned(es) then
|
||||
begin
|
||||
rv := es.getErrorStringBundleKey(aError, str);
|
||||
if NS_SUCCEEDED(rv) then
|
||||
Result := str;
|
||||
end
|
||||
else
|
||||
result := SGetServiceManagerError;
|
||||
end;
|
||||
|
||||
end.
|
808
components/geckoport/version2/nsGeckoStrings.pas
Normal file
808
components/geckoport/version2/nsGeckoStrings.pas
Normal file
@ -0,0 +1,808 @@
|
||||
(* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla 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/MPL/
|
||||
*
|
||||
* 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 GeckoSDK for Delphi.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Takanori Ito.
|
||||
* Portions created by the Initial Developer are Copyright (C) 2004
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** *)
|
||||
unit nsGeckoStrings;
|
||||
|
||||
interface
|
||||
|
||||
type
|
||||
nsAString = ^nsStringContainer;
|
||||
nsString = nsAString;
|
||||
nsStringContainer = record
|
||||
v: Pointer;
|
||||
d1: Pointer;
|
||||
d2: Longword;
|
||||
d3: Pointer;
|
||||
end;
|
||||
|
||||
nsACString = ^nsCStringContainer;
|
||||
nsCString = nsACString;
|
||||
nsCStringContainer = record
|
||||
v: Pointer;
|
||||
d1: Pointer;
|
||||
d2: Longword;
|
||||
d3: Pointer;
|
||||
end;
|
||||
|
||||
nsAUTF8String = nsACString;
|
||||
nsUTF8String = nsAUTF8String;
|
||||
nsUTF8StringContainer = nsCStringContainer;
|
||||
|
||||
IInterfacedString = interface;
|
||||
IInterfacedCString = interface;
|
||||
IInterfacedUTF8String = interface;
|
||||
|
||||
IInterfacedString = interface
|
||||
['{0FA36E7C-6CA9-4D02-AF23-B49F35047181}']
|
||||
function Length: Longword;
|
||||
procedure Cut(cutStart, cutLength: Longword);
|
||||
procedure Assign(Source: IInterfacedString); overload;
|
||||
procedure Assign(const Source: nsAString); overload;
|
||||
procedure Assign(Source: WideString); overload;
|
||||
procedure Append(Source: IInterfacedString); overload;
|
||||
procedure Append(const Source: nsAString); overload;
|
||||
procedure Append(Source: WideString); overload;
|
||||
procedure Insert(Source: IInterfacedString; aPosition: Longword); overload;
|
||||
procedure Insert(const Source: nsAString; aPosition: Longword); overload;
|
||||
procedure Insert(Source: WideString; aPosition: Longword); overload;
|
||||
procedure Replace(aPosition, aLength: Longword; const Source: nsAString); overload;
|
||||
procedure Replace(aPosition, aLength: Longword; Source: IInterfacedString); overload;
|
||||
function AString: nsAString;
|
||||
function ToString: WideString;
|
||||
end;
|
||||
|
||||
IInterfacedCString = interface
|
||||
['{3207A765-52D6-4E1C-B0F1-8EC39DA4D8B4}']
|
||||
function Length: Longword;
|
||||
procedure Cut(cutStart, cutLength: Longword);
|
||||
procedure Assign(Source: IInterfacedCString); overload;
|
||||
procedure Assign(const Source: nsACString); overload;
|
||||
procedure Assign(Source: AnsiString); overload;
|
||||
procedure Append(Source: IInterfacedCString); overload;
|
||||
procedure Append(const Source: nsACString); overload;
|
||||
procedure Append(Source: AnsiString); overload;
|
||||
procedure Insert(Source: IInterfacedCString; aPosition: Longword); overload;
|
||||
procedure Insert(const Source: nsACString; aPosition: Longword); overload;
|
||||
procedure Insert(Source: AnsiString; aPosition: Longword); overload;
|
||||
procedure Replace(aPosition, aLength: Longword; const Source: nsACString); overload;
|
||||
procedure Replace(aPosition, aLength: Longword; Source: IInterfacedCString); overload;
|
||||
function ACString: nsACString;
|
||||
function ToString: AnsiString;
|
||||
end;
|
||||
|
||||
IInterfacedUTF8String = interface
|
||||
['{100ABB7D-46A0-4BB2-B5BF-A94F9E53B78C}']
|
||||
function Length: Longword;
|
||||
procedure Cut(cutStart, cutLength: Longword);
|
||||
procedure Assign(Source: IInterfacedUTF8String); overload;
|
||||
procedure Assign(const Source: nsAUTF8String); overload;
|
||||
procedure Assign(Source: UTF8String); overload;
|
||||
procedure Append(Source: IInterfacedUTF8String); overload;
|
||||
procedure Append(const Source: nsAUTF8String); overload;
|
||||
procedure Append(Source: UTF8String); overload;
|
||||
procedure Insert(Source: IInterfacedUTF8String; aPosition: Longword); overload;
|
||||
procedure Insert(const Source: nsAUTF8String; aPosition: Longword); overload;
|
||||
procedure Insert(Source: UTF8String; aPosition: Longword); overload;
|
||||
procedure Replace(aPosition, aLength: Longword; const Source: nsAUTF8String); overload;
|
||||
procedure Replace(aPosition, aLength: Longword; Source: IInterfacedUTF8String); overload;
|
||||
function AUTF8String: nsAUTF8String;
|
||||
function ToString: UTF8String;
|
||||
end;
|
||||
|
||||
function Compare(const lhs, rhs: nsAString): Integer; overload;
|
||||
function Compare(const lhs, rhs: nsACString): Integer; overload;
|
||||
|
||||
function NewString: IInterfacedString; overload;
|
||||
function NewString(src: PWideChar): IInterfacedString; overload;
|
||||
function NewString(src: WideString): IInterfacedString; overload;
|
||||
function NewString(src: nsAString): IInterfacedString; overload;
|
||||
|
||||
function NewCString: IInterfacedCString; overload;
|
||||
function NewCString(src: PAnsiChar): IInterfacedCString; overload;
|
||||
function NewCString(src: AnsiString): IInterfacedCString; overload;
|
||||
function NewCString(src: nsACString): IInterfacedCString; overload;
|
||||
|
||||
function NewUTF8String: IInterfacedUTF8String; overload;
|
||||
function NewUTF8String(src: PAnsiChar): IInterfacedUTF8String; overload;
|
||||
function NewUTF8String(src: UTF8String): IInterfacedUTF8String; overload;
|
||||
function NewUTF8String(src: nsAUTF8String): IInterfacedUTF8String; overload;
|
||||
|
||||
function RelateString(src: nsAString; own: Boolean=False): IInterfacedString;
|
||||
function RelateCString(src: nsACString; own: Boolean=False): IInterfacedCString;
|
||||
function RelateUTF8String(src: nsAUTF8String; own: Boolean=False): IInterfacedUTF8String;
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
nsInit, nsMemory, nsError;
|
||||
|
||||
function Compare(const lhs, rhs: nsAString): Integer;
|
||||
var
|
||||
p1, p2: PWideChar;
|
||||
l1, l2: Longword;
|
||||
begin
|
||||
l1 := NS_StringGetData(lhs, p1);
|
||||
l2 := NS_StringGetData(rhs, p2);
|
||||
|
||||
while (l1>0) and (l2>0) do
|
||||
begin
|
||||
Result := Ord(p1^) - Ord(p2^);
|
||||
if Result <> 0 then Exit;
|
||||
Dec(l1);
|
||||
Dec(l2);
|
||||
Inc(p1);
|
||||
Inc(p2);
|
||||
end;
|
||||
Result := l1 - l2;
|
||||
end;
|
||||
|
||||
function Compare(const lhs, rhs: nsACString): Integer;
|
||||
var
|
||||
p1, p2: PAnsiChar;
|
||||
l1, l2: Longword;
|
||||
begin
|
||||
l1 := NS_CStringGetData(lhs, p1);
|
||||
l2 := NS_CStringGetData(rhs, p2);
|
||||
|
||||
while (l1>0) and (l2>0) do
|
||||
begin
|
||||
Result := Ord(p1^) - Ord(p2^);
|
||||
if Result <> 0 then Exit;
|
||||
Dec(l1);
|
||||
Dec(l2);
|
||||
Inc(p1);
|
||||
Inc(p2);
|
||||
end;
|
||||
Result := l1 - l2;
|
||||
end;
|
||||
|
||||
type
|
||||
TIStringImpl = class(TInterfacedObject, IInterfacedString)
|
||||
FContainer: nsStringContainer;
|
||||
FString: nsString;
|
||||
FOwn: Boolean;
|
||||
public
|
||||
constructor Create; overload;
|
||||
constructor Create(src: PWideChar); overload;
|
||||
constructor Create(src: WideString); overload;
|
||||
constructor Create(src: nsAString); overload;
|
||||
constructor Relate(src: nsAString; own: Boolean);
|
||||
destructor Destroy; override;
|
||||
|
||||
function Length: Longword;
|
||||
procedure Cut(cutStart, cutLength: Longword);
|
||||
procedure Assign(Source: IInterfacedString); overload;
|
||||
procedure Assign(const Source: nsAString); overload;
|
||||
procedure Assign(Source: WideString); overload;
|
||||
procedure Append(Source: IInterfacedString); overload;
|
||||
procedure Append(const Source: nsAString); overload;
|
||||
procedure Append(Source: WideString); overload;
|
||||
procedure Insert(Source: IInterfacedString; aPosition: Longword); overload;
|
||||
procedure Insert(const Source: nsAString; aPosition: Longword); overload;
|
||||
procedure Insert(Source: WideString; aPosition: Longword); overload;
|
||||
procedure Replace(aPosition, aLength: Longword; const Source: nsAString); overload;
|
||||
procedure Replace(aPosition, aLength: Longword; Source: IInterfacedString); overload;
|
||||
function AString: nsAString;
|
||||
function SIToString: WideString;
|
||||
function IInterfacedString.ToString = SIToString;
|
||||
end;
|
||||
|
||||
function NewString: IInterfacedString;
|
||||
begin
|
||||
Result := TIStringImpl.Create;
|
||||
end;
|
||||
|
||||
function NewString(src: PWideChar): IInterfacedString;
|
||||
begin
|
||||
Result := TIStringImpl.Create(src);
|
||||
end;
|
||||
|
||||
function NewString(src: WideString): IInterfacedString;
|
||||
begin
|
||||
Result := TIStringImpl.Create(src);
|
||||
end;
|
||||
|
||||
function NewString(src: nsAString): IInterfacedString;
|
||||
begin
|
||||
Result := TIStringImpl.Create(src);
|
||||
end;
|
||||
|
||||
function RelateString(src: nsAString; own: Boolean): IInterfacedString;
|
||||
begin
|
||||
Result := TIStringImpl.Relate(src, own);
|
||||
end;
|
||||
|
||||
constructor TIStringImpl.Create;
|
||||
begin
|
||||
inherited Create;
|
||||
if NS_FAILED(NS_StringContainerInit(FContainer)) then
|
||||
Error(reOutOfMemory);
|
||||
FOwn := True;
|
||||
FString := @FContainer;
|
||||
end;
|
||||
|
||||
constructor TIStringImpl.Create(src: PWideChar);
|
||||
begin
|
||||
inherited Create;
|
||||
if NS_FAILED(NS_StringContainerInit(FContainer)) then
|
||||
Error(reOutOfMemory);
|
||||
FOwn := True;
|
||||
FString := @FContainer;
|
||||
Assign(src);
|
||||
//nsMemory.Free(src);
|
||||
end;
|
||||
|
||||
constructor TIStringImpl.Create(src: WideString);
|
||||
begin
|
||||
inherited Create;
|
||||
if NS_FAILED(NS_StringContainerInit(FContainer)) then
|
||||
begin
|
||||
//Maybe the engine is being unloaded, so just skip error.
|
||||
//Error(reOutOfMemory);
|
||||
FillByte(FContainer,sizeof(FContainer),0);
|
||||
end;
|
||||
FOwn := True;
|
||||
FString := @FContainer;
|
||||
Assign(src);
|
||||
end;
|
||||
|
||||
constructor TIStringImpl.Create(src: nsAString);
|
||||
begin
|
||||
inherited Create;
|
||||
if NS_FAILED(NS_StringContainerInit(FContainer)) then
|
||||
Error(reOutOfMemory);
|
||||
FOwn := True;
|
||||
FString := @FContainer;
|
||||
Assign(src);
|
||||
end;
|
||||
|
||||
constructor TIStringImpl.Relate(src: nsAString; own: Boolean);
|
||||
begin
|
||||
inherited Create;
|
||||
FString := src;
|
||||
FOwn := own;
|
||||
end;
|
||||
|
||||
destructor TIStringImpl.Destroy;
|
||||
begin
|
||||
if FOwn then
|
||||
NS_StringContainerFinish(FString^);
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
function TIStringImpl.Length: Longword;
|
||||
var
|
||||
temp: PWideChar;
|
||||
begin
|
||||
Result := NS_StringGetData(FString, temp);
|
||||
//nsMemory.Free(temp);
|
||||
end;
|
||||
|
||||
procedure TIStringImpl.Cut(cutStart, cutLength: Longword);
|
||||
begin
|
||||
NS_StringCutData(FString, cutStart, cutLength);
|
||||
end;
|
||||
|
||||
procedure TIStringImpl.Assign(Source: IInterfacedString);
|
||||
begin
|
||||
NS_StringCopy(FString, Source.AString);
|
||||
end;
|
||||
|
||||
procedure TIStringImpl.Assign(const Source: nsAString);
|
||||
begin
|
||||
NS_StringCopy(FString, Source);
|
||||
end;
|
||||
|
||||
procedure TIStringImpl.Assign(Source: WideString);
|
||||
begin
|
||||
NS_StringSetData(FString, PWideChar(Source));
|
||||
end;
|
||||
|
||||
procedure TIStringImpl.Append(Source: IInterfacedString);
|
||||
begin
|
||||
NS_StringAppendData(FString, PWideChar(Source.ToString));
|
||||
end;
|
||||
|
||||
procedure TIStringImpl.Append(const Source: nsAString);
|
||||
var
|
||||
src2: IInterfacedString;
|
||||
begin
|
||||
src2 := NewString(Source);
|
||||
Append(src2);
|
||||
end;
|
||||
|
||||
procedure TIStringImpl.Append(Source: WideString);
|
||||
var
|
||||
src2: IInterfacedString;
|
||||
begin
|
||||
src2 := NewString(Source);
|
||||
Append(src2);
|
||||
end;
|
||||
|
||||
procedure TIStringImpl.Insert(Source: IInterfacedString; aPosition: Longword);
|
||||
begin
|
||||
NS_StringInsertData(FString, aPosition, PWideChar(Source.ToString));
|
||||
end;
|
||||
|
||||
procedure TIStringImpl.Insert(const Source: nsAString; aPosition: Longword);
|
||||
var
|
||||
src2: IInterfacedString;
|
||||
begin
|
||||
src2 := NewString(Source);
|
||||
Insert(src2, aPosition);
|
||||
end;
|
||||
|
||||
procedure TIStringImpl.Insert(Source: WideString; aPosition: Longword);
|
||||
var
|
||||
src2: IInterfacedString;
|
||||
begin
|
||||
src2 := NewString(Source);
|
||||
Insert(src2, aPosition);
|
||||
end;
|
||||
|
||||
procedure TIStringImpl.Replace(aPosition, aLength: Longword; Source: IInterfacedString);
|
||||
begin
|
||||
NS_StringSetDataRange(FString, aPosition, aLength, PWideChar(Source.ToString));
|
||||
end;
|
||||
|
||||
procedure TIStringImpl.Replace(aPosition, aLength: Longword; const Source: nsAString);
|
||||
var
|
||||
src2: IInterfacedString;
|
||||
begin
|
||||
src2 := NewString(Source);
|
||||
Replace(aPosition, aLength, Src2);
|
||||
end;
|
||||
|
||||
function TIStringImpl.AString: nsAString;
|
||||
begin
|
||||
Result := FString;
|
||||
end;
|
||||
|
||||
function TIStringImpl.SIToString: WideString;
|
||||
var
|
||||
p: PWideChar;
|
||||
l: Longword;
|
||||
i: Longword;
|
||||
begin
|
||||
l := NS_StringGetData(FString, p);
|
||||
SetLength(Result, l);
|
||||
for i:=1 to l do
|
||||
begin
|
||||
Result[i] := p^;
|
||||
Inc(p);
|
||||
end;
|
||||
end;
|
||||
|
||||
type
|
||||
TICStringImpl = class(TInterfacedObject, IInterfacedCString)
|
||||
FContainer: nsCStringContainer;
|
||||
FString: nsCString;
|
||||
FOwn: Boolean;
|
||||
|
||||
constructor Create; overload;
|
||||
constructor Create(src: AnsiString); overload;
|
||||
constructor Create(src: nsACString); overload;
|
||||
constructor Relate(src: nsACString; own: Boolean); overload;
|
||||
destructor Destroy; override;
|
||||
|
||||
function Length: Longword;
|
||||
procedure Cut(cutStart, cutLength: Longword);
|
||||
procedure Assign(Source: IInterfacedCString); overload;
|
||||
procedure Assign(const Source: nsACString); overload;
|
||||
procedure Assign(Source: AnsiString); overload;
|
||||
procedure Append(Source: IInterfacedCString); overload;
|
||||
procedure Append(const Source: nsACString); overload;
|
||||
procedure Append(Source: AnsiString); overload;
|
||||
procedure Insert(Source: IInterfacedCString; aPosition: Longword); overload;
|
||||
procedure Insert(const Source: nsACString; aPosition: Longword); overload;
|
||||
procedure Insert(Source: AnsiString; aPosition: Longword); overload;
|
||||
procedure Replace(aPosition, aLength: Longword; const Source: nsACString); overload;
|
||||
procedure Replace(aPosition, aLength: Longword; Source: IInterfacedCString); overload;
|
||||
function ACString: nsACString;
|
||||
function ToAnsiString: AnsiString;
|
||||
function IInterfacedCString.ToString = ToAnsiString;
|
||||
end;
|
||||
|
||||
TIUTF8StringImpl = class(TInterfacedObject, IInterfacedUTF8String)
|
||||
FContainer: nsCStringContainer;
|
||||
FString: nsCString;
|
||||
FOwn: Boolean;
|
||||
|
||||
constructor Create; overload;
|
||||
constructor Create(src: UTF8String); overload;
|
||||
constructor Create(src: nsAUTF8String); overload;
|
||||
constructor Relate(src: nsAUTF8String; own: Boolean); overload;
|
||||
destructor Destroy; override;
|
||||
|
||||
function Length: Longword;
|
||||
procedure Cut(cutStart, cutLength: Longword);
|
||||
procedure Assign(Source: IInterfacedUTF8String); overload;
|
||||
procedure Assign(const Source: nsAUTF8String); overload;
|
||||
procedure Assign(Source: UTF8String); overload;
|
||||
procedure Append(Source: IInterfacedUTF8String); overload;
|
||||
procedure Append(const Source: nsAUTF8String); overload;
|
||||
procedure Append(Source: UTF8String); overload;
|
||||
procedure Insert(Source: IInterfacedUTF8String; aPosition: Longword); overload;
|
||||
procedure Insert(const Source: nsAUTF8String; aPosition: Longword); overload;
|
||||
procedure Insert(Source: UTF8String; aPosition: Longword); overload;
|
||||
procedure Replace(aPosition, aLength: Longword; const Source: nsAUTF8String); overload;
|
||||
procedure Replace(aPosition, aLength: Longword; Source: IInterfacedUTF8String); overload;
|
||||
function AUTF8String: nsAUTF8String;
|
||||
function ToUTF8String: UTF8String;
|
||||
function IInterfacedUTF8String.ToString = ToUTF8String;
|
||||
end;
|
||||
|
||||
function NewCString: IInterfacedCString;
|
||||
begin
|
||||
Result := TICStringImpl.Create;
|
||||
end;
|
||||
|
||||
function NewCString(src: PAnsiChar): IInterfacedCString;
|
||||
begin
|
||||
Result := TICStringImpl.Create(src);
|
||||
end;
|
||||
|
||||
function NewCString(src: AnsiString): IInterfacedCString;
|
||||
begin
|
||||
Result := TICStringImpl.Create(src);
|
||||
end;
|
||||
|
||||
function NewCString(src: nsACString): IInterfacedCString;
|
||||
begin
|
||||
Result := TICStringImpl.Create(src);
|
||||
end;
|
||||
|
||||
function RelateCString(src: nsACString; own: Boolean): IInterfacedCString;
|
||||
begin
|
||||
Result := TICStringImpl.Relate(src, own);
|
||||
end;
|
||||
|
||||
function NewUTF8String: IInterfacedUTF8String;
|
||||
begin
|
||||
Result := TIUTF8StringImpl.Create;
|
||||
end;
|
||||
|
||||
function NewUTF8String(src: PAnsiChar): IInterfacedUTF8String;
|
||||
begin
|
||||
Result := TIUTF8StringImpl.Create(src);
|
||||
end;
|
||||
|
||||
function NewUTF8String(src: UTF8String): IInterfacedUTF8String;
|
||||
begin
|
||||
Result := TIUTF8StringImpl.Create(src);
|
||||
end;
|
||||
|
||||
function NewUTF8String(src: nsAUTF8String): IInterfacedUTF8String;
|
||||
begin
|
||||
Result := TIUTF8StringImpl.Create(src);
|
||||
end;
|
||||
|
||||
function RelateUTF8String(src: nsAUTF8String; own: Boolean): IInterfacedUTF8String;
|
||||
begin
|
||||
Result := TIUTF8StringImpl.Relate(src, own);
|
||||
end;
|
||||
|
||||
constructor TICStringImpl.Create;
|
||||
begin
|
||||
inherited Create;
|
||||
if NS_FAILED(NS_CStringContainerInit(FContainer)) then
|
||||
Error(reOutOfMemory);
|
||||
FOwn := True;
|
||||
FString := @FContainer;
|
||||
inherited Create;
|
||||
end;
|
||||
|
||||
constructor TICStringImpl.Create(src: AnsiString);
|
||||
begin
|
||||
inherited Create;
|
||||
if NS_FAILED(NS_CStringContainerInit(FContainer)) then
|
||||
Error(reOutOfMemory);
|
||||
FOwn := True;
|
||||
FString := @FContainer;
|
||||
Assign(src);
|
||||
end;
|
||||
|
||||
constructor TICStringImpl.Create(src: nsACString);
|
||||
begin
|
||||
inherited Create;
|
||||
if NS_FAILED(NS_CStringContainerInit(FContainer)) then
|
||||
Error(reOutOfMemory);
|
||||
FOwn := True;
|
||||
FString := @FContainer;
|
||||
Assign(src);
|
||||
end;
|
||||
|
||||
constructor TICStringImpl.Relate(src: nsACString; own: Boolean);
|
||||
begin
|
||||
inherited Create;
|
||||
FString := src;
|
||||
FOwn := own;
|
||||
end;
|
||||
|
||||
destructor TICStringImpl.Destroy;
|
||||
begin
|
||||
if FOwn then
|
||||
NS_CStringContainerFinish(FString^);
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
function TICStringImpl.Length: Longword;
|
||||
var
|
||||
temp: PAnsiChar;
|
||||
begin
|
||||
Result := NS_CStringGetData(FString, temp);
|
||||
end;
|
||||
|
||||
procedure TICStringImpl.Cut(cutStart, cutLength: Longword);
|
||||
begin
|
||||
NS_CStringCutData(FString, cutStart, cutLength);
|
||||
end;
|
||||
|
||||
procedure TICStringImpl.Assign(Source: IInterfacedCString);
|
||||
begin
|
||||
NS_CStringCopy(FString, Source.ACString);
|
||||
end;
|
||||
|
||||
procedure TICStringImpl.Assign(const Source: nsACString);
|
||||
begin
|
||||
NS_CStringCopy(FString, Source);
|
||||
end;
|
||||
|
||||
procedure TICStringImpl.Assign(Source: AnsiString);
|
||||
begin
|
||||
NS_CStringSetData(FString, PAnsiChar(Source));
|
||||
end;
|
||||
|
||||
procedure TICStringImpl.Append(Source: IInterfacedCString);
|
||||
var
|
||||
src2: PAnsiChar;
|
||||
begin
|
||||
NS_CStringGetData(Source.ACString, src2);
|
||||
NS_CStringAppendData(FString, src2);
|
||||
end;
|
||||
|
||||
procedure TICStringImpl.Append(const Source: nsACString);
|
||||
var
|
||||
src2: PAnsiChar;
|
||||
begin
|
||||
NS_CStringGetData(Source, src2);
|
||||
NS_CStringAppendData(FString, src2);
|
||||
end;
|
||||
|
||||
procedure TICStringImpl.Append(Source: AnsiString);
|
||||
begin
|
||||
NS_CStringAppendData(FString, PAnsiChar(Source));
|
||||
end;
|
||||
|
||||
procedure TICStringImpl.Insert(Source: IInterfacedCString; aPosition: Longword);
|
||||
var
|
||||
src2: PAnsiChar;
|
||||
begin
|
||||
NS_CStringGetData(Source.ACString, src2);
|
||||
NS_CStringInsertData(FString, aPosition, src2);
|
||||
end;
|
||||
|
||||
procedure TICStringImpl.Insert(const Source: nsACString; aPosition: Longword);
|
||||
var
|
||||
src2: PAnsiChar;
|
||||
begin
|
||||
NS_CStringGetData(Source, src2);
|
||||
NS_CStringInsertData(FString, aPosition, src2);
|
||||
end;
|
||||
|
||||
procedure TICStringImpl.Insert(Source: AnsiString; aPosition: Longword);
|
||||
begin
|
||||
NS_CStringInsertData(FString, aPosition, PAnsiChar(Source));
|
||||
end;
|
||||
|
||||
procedure TICStringImpl.Replace(aPosition, aLength: Longword; Source: IInterfacedCString);
|
||||
var
|
||||
src2: PAnsiChar;
|
||||
begin
|
||||
NS_CStringGetData(Source.ACString, src2);
|
||||
NS_CStringSetDataRange(FString, aPosition, aLength, src2);
|
||||
end;
|
||||
|
||||
procedure TICStringImpl.Replace(aPosition, aLength: Longword; const Source: nsACString);
|
||||
var
|
||||
src2: PAnsiChar;
|
||||
begin
|
||||
NS_CStringGetData(Source, src2);
|
||||
NS_CStringSetDataRange(FString, aPosition, aLength, src2);
|
||||
end;
|
||||
|
||||
function TICStringImpl.ACString: nsACString;
|
||||
begin
|
||||
Result := FString;
|
||||
end;
|
||||
|
||||
function TICStringImpl.ToAnsiString: AnsiString;
|
||||
var
|
||||
p: PAnsiChar;
|
||||
l: Longword;
|
||||
i: Longword;
|
||||
begin
|
||||
l := NS_CStringGetData(FString, p);
|
||||
SetLength(Result, l);
|
||||
for i:=1 to l do
|
||||
begin
|
||||
Result[i] := p^;
|
||||
Inc(p);
|
||||
end;
|
||||
end;
|
||||
|
||||
constructor TIUTF8StringImpl.Create;
|
||||
begin
|
||||
inherited Create;
|
||||
if NS_FAILED(NS_CStringContainerInit(FContainer)) then
|
||||
Error(reOutOfMemory);
|
||||
FOwn := True;
|
||||
FString := @FContainer;
|
||||
inherited Create;
|
||||
end;
|
||||
|
||||
constructor TIUTF8StringImpl.Create(src: UTF8String);
|
||||
begin
|
||||
inherited Create;
|
||||
if NS_FAILED(NS_CStringContainerInit(FContainer)) then
|
||||
Error(reOutOfMemory);
|
||||
FOwn := True;
|
||||
FString := @FContainer;
|
||||
Assign(src);
|
||||
end;
|
||||
|
||||
constructor TIUTF8StringImpl.Create(src: nsAUTF8String);
|
||||
begin
|
||||
inherited Create;
|
||||
if NS_FAILED(NS_CStringContainerInit(FContainer)) then
|
||||
Error(reOutOfMemory);
|
||||
FOwn := True;
|
||||
FString := @FContainer;
|
||||
Assign(src);
|
||||
end;
|
||||
|
||||
constructor TIUTF8StringImpl.Relate(src: nsAUTF8String; own: Boolean);
|
||||
begin
|
||||
inherited Create;
|
||||
FString := src;
|
||||
FOwn := own;
|
||||
end;
|
||||
|
||||
destructor TIUTF8StringImpl.Destroy;
|
||||
begin
|
||||
if FOwn then
|
||||
NS_CStringContainerFinish(FString^);
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
function TIUTF8StringImpl.Length: Longword;
|
||||
var
|
||||
temp: PAnsiChar;
|
||||
begin
|
||||
Result := NS_CStringGetData(FString, temp);
|
||||
end;
|
||||
|
||||
procedure TIUTF8StringImpl.Cut(cutStart: Cardinal; cutLength: Cardinal);
|
||||
begin
|
||||
NS_CStringCutData(FString, cutStart, cutLength);
|
||||
end;
|
||||
|
||||
procedure TIUTF8StringImpl.Assign(Source: IInterfacedUTF8String);
|
||||
begin
|
||||
NS_CStringCopy(FString, Source.AUTF8String);
|
||||
end;
|
||||
|
||||
procedure TIUTF8StringImpl.Assign(const Source: nsAUTF8String);
|
||||
begin
|
||||
NS_CStringCopy(FString, Source);
|
||||
end;
|
||||
|
||||
procedure TIUTF8StringImpl.Assign(Source: UTF8String);
|
||||
begin
|
||||
NS_CStringSetData(FString, PAnsiChar(Source));
|
||||
end;
|
||||
|
||||
procedure TIUTF8StringImpl.Append(Source: IInterfacedUTF8String);
|
||||
begin
|
||||
NS_CStringAppendData(FString, PAnsiChar(Source.ToString));
|
||||
end;
|
||||
|
||||
procedure TIUTF8StringImpl.Append(const Source: nsAUTF8String);
|
||||
var
|
||||
src2: PAnsiChar;
|
||||
begin
|
||||
NS_CStringGetData(source, src2);
|
||||
NS_CStringAppendData(FString, src2);
|
||||
end;
|
||||
|
||||
procedure TIUTF8StringImpl.Append(Source: UTF8String);
|
||||
begin
|
||||
NS_CStringAppendData(FString, PAnsiChar(Source));
|
||||
end;
|
||||
|
||||
procedure TIUTF8StringImpl.Insert(Source: IInterfacedUTF8String; aPosition: Longword);
|
||||
begin
|
||||
NS_CStringInsertData(FString, aPosition, PAnsiChar(Source.ToString));
|
||||
end;
|
||||
|
||||
procedure TIUTF8StringImpl.Insert(const Source: nsAUTF8String; aPosition: Longword);
|
||||
var
|
||||
src2: PAnsiChar;
|
||||
begin
|
||||
NS_CStringGetData(source, src2);
|
||||
NS_CStringInsertData(FString, aPosition, src2);
|
||||
end;
|
||||
|
||||
procedure TIUTF8StringImpl.Insert(Source: UTF8String; aPosition: Longword);
|
||||
begin
|
||||
NS_CStringInsertData(FString, aPosition, PAnsiChar(Source));
|
||||
end;
|
||||
|
||||
procedure TIUTF8StringImpl.Replace(aPosition, aLength: Longword; Source: IInterfacedUTF8String);
|
||||
var
|
||||
src2: PAnsiChar;
|
||||
begin
|
||||
NS_CStringGetData(source.AUTF8String, src2);
|
||||
NS_CStringSetDataRange(FString, aPosition, aLength, src2);
|
||||
end;
|
||||
|
||||
procedure TIUTF8StringImpl.Replace(aPosition, aLength: Longword; const Source: nsAUTF8String);
|
||||
var
|
||||
src2: PAnsiChar;
|
||||
begin
|
||||
NS_CStringGetData(source, src2);
|
||||
NS_CStringSetDataRange(FString, aPosition, aLength, src2);
|
||||
end;
|
||||
|
||||
function TIUTF8StringImpl.AUTF8String: nsAUTF8String;
|
||||
begin
|
||||
Result := FString;
|
||||
end;
|
||||
|
||||
function TIUTF8StringImpl.ToUTF8String:UTF8String;
|
||||
var
|
||||
p: PAnsiChar;
|
||||
l: Longword;
|
||||
i: Longword;
|
||||
begin
|
||||
l := NS_CStringGetData(FString, p);
|
||||
SetLength(Result, l);
|
||||
for i:=1 to l do
|
||||
begin
|
||||
Result[i] := p^;
|
||||
Inc(p);
|
||||
end;
|
||||
end;
|
||||
|
||||
end.
|
2215
components/geckoport/version2/nsInit.pas
Executable file
2215
components/geckoport/version2/nsInit.pas
Executable file
File diff suppressed because it is too large
Load Diff
167
components/geckoport/version2/nsMemory.pas
Normal file
167
components/geckoport/version2/nsMemory.pas
Normal file
@ -0,0 +1,167 @@
|
||||
(* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla 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/MPL/
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* The Initial Developer of the Original Code is
|
||||
* Netscape Communications Corpotation.
|
||||
* Portions created by the Initial Developer are Copyright (C) 1998
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
* Takanori Itou <necottie@nesitive.net>
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** *)
|
||||
unit nsMemory;
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
nsXPCOM;
|
||||
|
||||
const
|
||||
NS_MEMORY_CONTRACTID = '@mozilla.org/xpcom/memory-service;1';
|
||||
NS_MEMORY_CLASSNAME = 'Global Memory Service';
|
||||
NS_MEMORY_CID: TGUID = '{30a04e40-38e7-11d4-8cf5-0060b0fc14a3}';
|
||||
|
||||
function Alloc(size: Integer): Pointer;
|
||||
function Realloc(ptr: Pointer; size: Integer): Pointer;
|
||||
function Free(ptr: Pointer): Integer;
|
||||
function HeapMinimize(aImmediate: Boolean): Longword;
|
||||
function Clone(Ptr: Pointer; size: Longword): Pointer;
|
||||
function GetGlobalMemoryService: nsIMemory;
|
||||
|
||||
function GlueStartupMemory: Longword;
|
||||
procedure GlueShutdownMemory;
|
||||
|
||||
procedure SetToMemoryManager;
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
nsError, nsInit;
|
||||
|
||||
var
|
||||
gMemory: nsIMemory;
|
||||
|
||||
procedure FreeGlobalMemory;
|
||||
begin
|
||||
gMemory := nil;
|
||||
end;
|
||||
|
||||
function SetupGlobalMemory: nsIMemory;
|
||||
begin
|
||||
if Assigned(gMemory) then Exit;
|
||||
nsInit.NS_GetMemoryManager(gMemory);
|
||||
if not Assigned(gMemory) then Exit;
|
||||
Result := gMemory;
|
||||
end;
|
||||
|
||||
function GlueStartupMemory: Longword;
|
||||
begin
|
||||
Result := LongWord(NS_ERROR_FAILURE);
|
||||
if Assigned(gMemory) then Exit;
|
||||
nsInit.NS_GetMemoryManager(gMemory);
|
||||
if not Assigned(gMemory) then Exit;
|
||||
Result := NS_OK;
|
||||
end;
|
||||
|
||||
procedure GlueShutdownMemory;
|
||||
begin
|
||||
gMemory := nil;
|
||||
end;
|
||||
|
||||
function ENSURE_ALLOCATOR: Boolean;
|
||||
begin
|
||||
Result := True;
|
||||
if not Assigned(gMemory) and not Assigned(SetupGlobalMemory()) then
|
||||
Result := False;
|
||||
end;
|
||||
|
||||
function Alloc(size: Integer): Pointer;
|
||||
begin
|
||||
Result := nil;
|
||||
if ENSURE_ALLOCATOR then
|
||||
Result := gMemory.Alloc(size);
|
||||
end;
|
||||
|
||||
function Realloc(ptr: Pointer; size: Integer): Pointer;
|
||||
begin
|
||||
Result := nil;
|
||||
if ENSURE_ALLOCATOR then
|
||||
Result := gMemory.Realloc(ptr, size);
|
||||
end;
|
||||
|
||||
function Free(ptr: Pointer): Integer;
|
||||
begin
|
||||
Result := NS_OK;
|
||||
if ENSURE_ALLOCATOR then gMemory.Free(ptr)
|
||||
else
|
||||
Result := Integer(NS_ERROR_UNEXPECTED);
|
||||
end;
|
||||
|
||||
function HeapMinimize(aImmediate: Boolean): Longword;
|
||||
begin
|
||||
Result := LongWord(NS_ERROR_FAILURE);
|
||||
if ENSURE_ALLOCATOR then
|
||||
try
|
||||
Result := NS_OK;
|
||||
gMemory.HeapMinimize(aImmediate);
|
||||
except
|
||||
Result := LongWord(NS_ERROR_FAILURE);
|
||||
end;
|
||||
end;
|
||||
|
||||
function Clone(ptr: Pointer; size: Longword): Pointer;
|
||||
begin
|
||||
Result := nil;
|
||||
if ENSURE_ALLOCATOR then
|
||||
Result := Clone(Ptr, size);
|
||||
end;
|
||||
|
||||
function GetGlobalMemoryService: nsIMemory;
|
||||
begin
|
||||
Result := nil;
|
||||
if not ENSURE_ALLOCATOR then Exit;
|
||||
Result := gMemory;
|
||||
end;
|
||||
|
||||
{$IFNDEF FPC}
|
||||
const
|
||||
memmgr: TMemoryManager = (
|
||||
GetMem: Alloc;
|
||||
FreeMem: Free;
|
||||
ReallocMem: Realloc;
|
||||
);
|
||||
{$ENDIF}
|
||||
|
||||
procedure SetToMemoryManager;
|
||||
begin
|
||||
{$IFNDEF FPC}
|
||||
SetMemoryManager(memmgr);
|
||||
{$ENDIF}
|
||||
end;
|
||||
|
||||
end.
|
322
components/geckoport/version2/nsNetUtil.pas
Normal file
322
components/geckoport/version2/nsNetUtil.pas
Normal file
@ -0,0 +1,322 @@
|
||||
(* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla 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/MPL/
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* The Initial Developer of the Original Code is
|
||||
* Netscape Communications Corpotation.
|
||||
* Portions created by the Initial Developer are Copyright (C) 1998
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
* Takanori Itou <necottie@nesitive.net>
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** *)
|
||||
unit nsNetUtil;
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
nsXPCOM, nsTypes, nsGeckoStrings;
|
||||
|
||||
function NS_GetIOService: nsIIOService;
|
||||
|
||||
function NS_NewURI(const spec: nsAUTF8String;
|
||||
const charset: AnsiString='';
|
||||
baseURI: nsIURI=nil; ioService:
|
||||
nsIIOService=nil): nsIURI; overload;
|
||||
function NS_NewURI(const spec: UTF8String;
|
||||
baseURI: nsIURI=nil;
|
||||
ioService: nsIIOService=nil): nsIURI; overload;
|
||||
function NS_NewFileURI(spec: nsIFile; ioService:
|
||||
nsIIOService=nil): nsIURI;
|
||||
function NS_NewChannel(uri: nsIURI;
|
||||
ioService: nsIIOService=nil;
|
||||
loadGroup: nsILoadGroup=nil;
|
||||
callbacks: nsIInterfaceRequestor=nil;
|
||||
loadFlags: Longword=NS_IREQUEST_LOAD_NORMAL): nsIChannel;
|
||||
function NS_OpenURI(uri: nsIURI;
|
||||
ioService: nsIIOService=nil;
|
||||
loadGroup: nsILoadGroup=nil;
|
||||
callbacks: nsIInterfaceRequestor=nil;
|
||||
loadFlags: Longword=NS_IREQUEST_LOAD_NORMAL): nsIInputStream; overload;
|
||||
procedure NS_OpenURI(listener: nsIStreamListener;
|
||||
context: nsISupports; uri:
|
||||
nsIURI; ioService: nsIIOService=nil;
|
||||
loadGroup: nsILoadGroup=nil;
|
||||
callbacks: nsIInterfaceRequestor=nil;
|
||||
loadFlags: Longword=NS_IREQUEST_LOAD_NORMAL); overload;
|
||||
procedure NS_MakeAbsoluteURI(uri: nsAUTF8String;
|
||||
const spec: nsAUTF8String;
|
||||
baseURI: nsIURI;
|
||||
ioService: nsIIOService=nil); overload;
|
||||
function NS_MakeAbsoluteURI(const spec: UTF8String;
|
||||
baseURI: nsIURI;
|
||||
ioService: nsIIOService=nil): UTF8String; overload;
|
||||
function NS_NewLoadGroup(obs: nsIRequestObserver): nsILoadGroup;
|
||||
|
||||
|
||||
function NS_NewURI(const spec: nsAString; const charset: AnsiString=''; baseURI: nsIURI=nil; ioService: nsIIOService=nil): nsIURI; overload;
|
||||
procedure NS_MakeAbsoluteURI(uri: nsAString; const spec: nsAString; baseURI: nsIURI; ioService: nsIIOService=nil); overload;
|
||||
|
||||
resourcestring
|
||||
SNewURIError = 'Cannot create instance of nsIURI by URI ''%s.'' ';
|
||||
SConversationError = 'Cannot convert strings between UTF8 and UTF16.';
|
||||
SNewFileURIError = 'Cannot create instance of nsIURI by file ''%s.''';
|
||||
SNewChannelError = 'Cannot create instance of nsIChannel.';
|
||||
SOpenURIError = 'Cannot open URI ''%s.'' ';
|
||||
SMakeAbsoluteURIError = 'Cannot make the absolute URI.';
|
||||
SNewLoadGroupError = 'Cannot create instance of nsILoadGroup.';
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
nsXPCOMGlue, nsError, nsInit;
|
||||
|
||||
function NS_GetIOService: nsIIOService;
|
||||
const
|
||||
kIOServiceCID:TGUID = '{9ac9e770-18bc-11d3-9337-00104ba0fd40}';
|
||||
begin
|
||||
NS_GetService(kIOServiceCID, nsIIOService, Result);
|
||||
end;
|
||||
|
||||
function EnsureIOService(ios: nsIIOService): nsIIOService;
|
||||
begin
|
||||
if not Assigned(ios) then
|
||||
begin
|
||||
Result := NS_GetIOService;
|
||||
end else
|
||||
begin
|
||||
Result := ios;
|
||||
end;
|
||||
end;
|
||||
|
||||
function NS_NewURI(const spec: nsAUTF8String; const charset: AnsiString; baseURI: nsIURI; ioService: nsIIOService): nsIURI;
|
||||
var
|
||||
charsetPtr: PAnsiChar;
|
||||
grip: nsIIOService;
|
||||
str: IInterfacedUTF8String;
|
||||
begin
|
||||
if Length(charset)>0 then
|
||||
charsetPtr := PAnsiChar(charset)
|
||||
else
|
||||
charsetPtr := nil;
|
||||
|
||||
grip := EnsureIOService(ioService);
|
||||
try
|
||||
Result := grip.NewURI(spec, charsetPtr, baseURI);
|
||||
except
|
||||
str := RelateUTF8String(spec);
|
||||
raise EGeckoError.CreateResFmt(PResStringRec(@SNewURIError), [str.ToString]);
|
||||
end;
|
||||
end;
|
||||
|
||||
function NS_NewURI(const spec: nsAString; const charset: AnsiString; baseURI: nsIURI; ioService: nsIIOService): nsIURI;
|
||||
var
|
||||
spec2: IInterfacedUTF8String;
|
||||
rv: nsresult;
|
||||
begin
|
||||
spec2 := NewUTF8String;
|
||||
rv := NS_UTF16ToCString(spec, NS_ENCODING_UTF8, spec2.AUTF8String);
|
||||
if NS_FAILED(rv) then
|
||||
raise EGeckoError.CreateRes(PResStringRec(@SConversationError));
|
||||
Result := NS_NewURI(spec2.AUTF8String, charset, baseURI, ioService);
|
||||
end;
|
||||
|
||||
function NS_NewURI(const spec: UTF8String; baseURI: nsIURI; ioService: nsIIOService): nsIURI;
|
||||
var
|
||||
spec2: IInterfacedUTF8String;
|
||||
begin
|
||||
spec2 := NewUTF8String(spec);
|
||||
|
||||
Result := NS_NewURI(spec2.AUTF8String, '', baseURI, ioService);
|
||||
end;
|
||||
|
||||
function NS_NewFileURI(spec: nsIFile; ioService:
|
||||
nsIIOService): nsIURI;
|
||||
var
|
||||
grip: nsIIOService;
|
||||
str: IInterfacedUTF8String;
|
||||
begin
|
||||
grip := EnsureIOService(ioService);
|
||||
if Assigned(grip) then
|
||||
try
|
||||
Result := grip.NewFileURI(spec);
|
||||
except
|
||||
str := NewUTF8String;
|
||||
spec.GetNativePath(str.AUTF8String);
|
||||
raise EGeckoError.CreateResFmt(PResStringRec(@SNewFileURIError), [str.ToString]);
|
||||
end;
|
||||
end;
|
||||
|
||||
function NS_NewChannel(uri: nsIURI;
|
||||
ioService: nsIIOService;
|
||||
loadGroup: nsILoadGroup;
|
||||
callbacks: nsIInterfaceRequestor;
|
||||
loadFlags: Longword): nsIChannel;
|
||||
var
|
||||
grip: nsIIOService;
|
||||
chan: nsIChannel;
|
||||
begin
|
||||
grip := EnsureIOService(ioService);
|
||||
try
|
||||
chan := grip.NewChannelFromURI(uri);
|
||||
if Assigned(loadGroup) then
|
||||
chan.SetLoadGroup(loadGroup);
|
||||
if Assigned(callbacks) then
|
||||
chan.SetNotificationCallbacks(callbacks);
|
||||
if loadFlags <> NS_IREQUEST_LOAD_NORMAL then
|
||||
chan.SetLoadFlags(loadFlags);
|
||||
Result := chan;
|
||||
except
|
||||
raise EGeckoError.CreateRes(PResStringRec(@SNewChannelError));
|
||||
end;
|
||||
end;
|
||||
|
||||
function NS_OpenURI(uri: nsIURI;
|
||||
ioService: nsIIOService;
|
||||
loadGroup: nsILoadGroup;
|
||||
callbacks: nsIInterfaceRequestor;
|
||||
loadFlags: Longword): nsIInputStream;
|
||||
var
|
||||
channel: nsIChannel;
|
||||
st: nsIInputStream;
|
||||
str: IInterfacedCString;
|
||||
begin
|
||||
try
|
||||
channel := NS_NewChannel(uri, ioService, loadGroup, callbacks, loadFlags);
|
||||
st := channel.Open;
|
||||
Result := st;
|
||||
except
|
||||
str := NewCString;
|
||||
uri.GetSpec(str.ACString);
|
||||
raise EGeckoError.CreateResFmt(PResStringRec(@SOpenURIError), [str.ToString]);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure NS_OpenURI(listener: nsIStreamListener;
|
||||
context: nsISupports; uri:
|
||||
nsIURI; ioService: nsIIOService;
|
||||
loadGroup: nsILoadGroup;
|
||||
callbacks: nsIInterfaceRequestor;
|
||||
loadFlags: Longword);
|
||||
var
|
||||
channel: nsIChannel;
|
||||
str: IInterfacedCString;
|
||||
begin
|
||||
try
|
||||
channel := NS_NewChannel(uri, ioService, loadGroup, callbacks, loadFlags);
|
||||
channel.AsyncOpen(listener, context);
|
||||
except
|
||||
str := NewCString;
|
||||
uri.GetSpec(str.ACString);
|
||||
raise EGeckoError.CreateResFmt(PResStringRec(@SOpenURIError), [str.ToString]);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure NS_MakeAbsoluteURI(uri: nsAUTF8String;
|
||||
const spec: nsAUTF8String;
|
||||
baseURI: nsIURI;
|
||||
ioService: nsIIOService);
|
||||
var
|
||||
uri2, spec2: IInterfacedUTF8String;
|
||||
begin
|
||||
uri2 := RelateUTF8String(uri);
|
||||
spec2 := RelateUTF8String(spec);
|
||||
|
||||
if not Assigned(baseURI) then
|
||||
begin
|
||||
uri2.Assign(spec2);
|
||||
end else
|
||||
if uri2.Length()>0 then
|
||||
try
|
||||
baseURI.Resolve(spec2.AUTF8String, uri2.AUTF8String);
|
||||
except
|
||||
raise EGeckoError.CreateRes(PResStringRec(@SMakeAbsoluteURIError));
|
||||
end else
|
||||
raise EGeckoError.CreateRes(PResStringRec(@SMakeAbsoluteURIError));
|
||||
end;
|
||||
|
||||
procedure NS_MakeAbsoluteURI(uri: nsAString; const spec: nsAString; baseURI: nsIURI; ioService: nsIIOService=nil);
|
||||
var
|
||||
uri2, spec2: IInterfacedString;
|
||||
buf1, buf2: IInterfacedUTF8String;
|
||||
rv: nsresult;
|
||||
begin
|
||||
uri2 := RelateString(uri);
|
||||
spec2 := RelateString(spec);
|
||||
buf1 := NewUTF8String;
|
||||
buf2 := NewUTF8String;
|
||||
|
||||
if not Assigned(baseURI) then
|
||||
begin
|
||||
uri2.Assign(spec2);
|
||||
end else
|
||||
try
|
||||
if uri2.Length()=0 then
|
||||
baseURI.GetSpec(buf1.AUTF8String)
|
||||
else
|
||||
begin
|
||||
NS_UTF16ToCString(spec,NS_ENCODING_UTF8,buf2.AUTF8String);
|
||||
baseURI.Resolve(buf2.AUTF8String, buf1.AUTF8String);
|
||||
end;
|
||||
rv := NS_CStringToUTF16(buf1.AUTF8String, NS_ENCODING_UTF8, uri);
|
||||
if NS_FAILED(rv) then
|
||||
raise EGeckoError.CreateRes(PResStringRec(@SConversationError));
|
||||
except
|
||||
on EGeckoError do raise
|
||||
else raise EGeckoError.CreateRes(PResStringRec(@SMakeAbsoluteURIError));
|
||||
end;
|
||||
end;
|
||||
|
||||
function NS_MakeAbsoluteURI(const spec: UTF8String;
|
||||
baseURI: nsIURI;
|
||||
ioService: nsIIOService): UTF8String;
|
||||
var
|
||||
uri2, spec2: IInterfacedUTF8String;
|
||||
begin
|
||||
uri2 := NewUTF8String();
|
||||
spec2 := NewUTF8String(spec);
|
||||
|
||||
NS_MakeAbsoluteURI(uri2.AUTF8String, spec2.AUTF8String, baseURI, ioService);
|
||||
Result := uri2.ToString;
|
||||
end;
|
||||
|
||||
function NS_NewLoadGroup(obs: nsIRequestObserver): nsILoadGroup;
|
||||
const
|
||||
kLoadGroupCID: TGUID = '{e1c61582-2a84-11d3-8cce-0060b0fc14a3}';
|
||||
var
|
||||
group: nsILoadGroup;
|
||||
begin
|
||||
try
|
||||
NS_CreateInstance(kLoadGroupCID,nsILoadGroup,group);
|
||||
group.SetGroupObserver(obs);
|
||||
Result := group;
|
||||
except
|
||||
raise EGeckoError.CreateRes(PResStringRec(@SNewLoadGroupError));
|
||||
end;
|
||||
end;
|
||||
|
||||
end.
|
584
components/geckoport/version2/nsProfile.pas
Normal file
584
components/geckoport/version2/nsProfile.pas
Normal file
@ -0,0 +1,584 @@
|
||||
(* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla 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/MPL/
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* The Initial Developer of the Original Code is
|
||||
* Netscape Communications Corpotation.
|
||||
* Portions created by the Initial Developer are Copyright (C) 1998
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
* Takanori Itou <necottie@nesitive.net>
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** *)
|
||||
unit nsProfile;
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
nsXPCOM, nsTypes, nsXPCOMGlue;
|
||||
|
||||
type
|
||||
nsProfileDirServiceProvider = interface(nsIDirectoryServiceProvider)
|
||||
procedure SetProfileDir(AProfileDir: nsIFile);
|
||||
procedure Register;
|
||||
procedure Shutdown;
|
||||
end;
|
||||
|
||||
EGeckoProfileError = class(EGeckoError);
|
||||
|
||||
function NS_NewProfileDirServiceProvider(aNotifyObservers: PRBool): nsProfileDirServiceProvider;
|
||||
|
||||
resourcestring
|
||||
SProfileRegisterError = 'Failed to register profile.';
|
||||
SProfileShutdownError = 'Failed to shutdown profile.';
|
||||
SSetProfileDirError = 'Failed to register profile directory.';
|
||||
SNotADirectory = 'The specified file is not a directory.';
|
||||
SProfileInitError = 'Failed to initialize profile.';
|
||||
SEnsureProfileDirError = 'Cannot ensure profile directory.';
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
Windows, SysUtils, nsConsts, nsError, nsGeckoStrings, nsCID;
|
||||
|
||||
type
|
||||
TProfileDirLock = class(TObject)
|
||||
FHaveLock: Boolean;
|
||||
FLockFileHandle: THandle;
|
||||
|
||||
constructor Create; overload;
|
||||
constructor Create(src: TProfileDirLock); overload;
|
||||
destructor Destroy; override;
|
||||
|
||||
procedure Assign(rhs: TProfileDirLock);
|
||||
function Lock(aFile: nsILocalFile): nsresult;
|
||||
function Unlock: nsresult;
|
||||
end;
|
||||
|
||||
TProfileDirServiceProvider = class(TInterfacedObject,
|
||||
nsProfileDirServiceProvider,
|
||||
nsIDirectoryServiceProvider)
|
||||
FProfileDir: nsIFile;
|
||||
FProfileDirLock: TProfileDirLock;
|
||||
FNotifyObservers: PRBool;
|
||||
FSharingEnabled: Boolean;
|
||||
FNonSharedDirName: IInterfacedString;
|
||||
FNonSharedProfileDir: nsIFile;
|
||||
function GetFile(const prop: PAnsiChar; out persistent: PRBool): nsIFile; safecall;
|
||||
procedure SetProfileDir(AProfileDir: nsIFile);
|
||||
procedure Register;
|
||||
procedure Shutdown;
|
||||
|
||||
constructor Create(aNotifyObservers: PRBool = True);
|
||||
destructor Destroy; override;
|
||||
|
||||
procedure Initialize;
|
||||
procedure InitProfileDir(profileDir: nsIFile);
|
||||
procedure InitNonSharedProfileDir;
|
||||
procedure EnsureProfileFileExists(aFile: nsIFile; destDir: nsIFile);
|
||||
procedure UndefineFileLocations;
|
||||
|
||||
function SafeCallException(ExceptObject: TObject; ExceptAddr: Pointer): HResult; override;
|
||||
end;
|
||||
|
||||
constructor TProfileDirLock.Create;
|
||||
begin
|
||||
inherited Create;
|
||||
|
||||
FHaveLock := False;
|
||||
FLockFileHandle := INVALID_HANDLE_VALUE;
|
||||
end;
|
||||
|
||||
constructor TProfileDirLock.Create(src: TProfileDirLock);
|
||||
begin
|
||||
inherited Create;
|
||||
|
||||
Assign(src);
|
||||
end;
|
||||
|
||||
procedure TProfileDirLock.Assign(rhs: TProfileDirLock);
|
||||
begin
|
||||
Unlock();
|
||||
|
||||
FHaveLock := rhs.FHaveLock;
|
||||
rhs.FHaveLock := False;
|
||||
|
||||
FLockFileHandle := rhs.FLockFileHandle;
|
||||
rhs.FLockFileHandle := INVALID_HANDLE_VALUE;
|
||||
end;
|
||||
|
||||
destructor TProfileDirLock.Destroy;
|
||||
begin
|
||||
Unlock();
|
||||
inherited;
|
||||
end;
|
||||
|
||||
function TProfileDirLock.Lock(aFile: nsILocalFile): nsresult;
|
||||
const
|
||||
LOCKFILE_NAME = 'parent.lock';
|
||||
var
|
||||
isDir: PRBool;
|
||||
lockFile: nsIFile;
|
||||
lockFileName: IInterfacedString;
|
||||
filePath: IInterfacedCString;
|
||||
begin
|
||||
try
|
||||
lockFileName := NewString(LOCKFILE_NAME);
|
||||
filePath := NewCString;
|
||||
|
||||
if not FHaveLock then
|
||||
begin
|
||||
Result := NS_ERROR_UNEXPECTED;
|
||||
Exit;
|
||||
end;
|
||||
|
||||
isDir := aFile.IsDirectory();
|
||||
|
||||
if not isDir then
|
||||
begin
|
||||
Result := NS_ERROR_FILE_NOT_DIRECTORY;
|
||||
Exit;
|
||||
end;
|
||||
|
||||
lockFile := aFile.Clone();
|
||||
lockFile.Append(lockFileName.AString);
|
||||
lockFile.GetNativePath(filePath.ACString);
|
||||
|
||||
FLockFileHandle := CreateFileA(PAnsiChar(filePath.ToString),
|
||||
GENERIC_READ or GENERIC_WRITE,
|
||||
0,
|
||||
nil,
|
||||
OPEN_ALWAYS,
|
||||
FILE_FLAG_DELETE_ON_CLOSE,
|
||||
0);
|
||||
if FLockFileHandle = INVALID_HANDLE_VALUE then
|
||||
begin
|
||||
Result := NS_ERROR_FILE_ACCESS_DENIED;
|
||||
Exit;
|
||||
end;
|
||||
FHaveLock := True;
|
||||
Result := NS_OK;
|
||||
except
|
||||
on EOutOfMemory do
|
||||
Result := NS_ERROR_OUT_OF_MEMORY;
|
||||
on ESafeCallException do
|
||||
Result := NS_ERROR_FAILURE;
|
||||
else
|
||||
Result := NS_ERROR_UNEXPECTED;
|
||||
end;
|
||||
end;
|
||||
|
||||
function TProfileDirLock.Unlock: nsresult;
|
||||
begin
|
||||
Result := NS_OK;
|
||||
|
||||
if FHaveLock then
|
||||
begin
|
||||
if FLockFileHandle <> INVALID_HANDLE_VALUE then
|
||||
begin
|
||||
CloseHandle(FLockFileHandle);
|
||||
FLockFileHandle := INVALID_HANDLE_VALUE;
|
||||
end;
|
||||
FHaveLock := False;
|
||||
end;
|
||||
end;
|
||||
|
||||
constructor TProfileDirServiceProvider.Create(aNotifyObservers: PRBool);
|
||||
begin
|
||||
inherited Create;
|
||||
FNotifyObservers := aNotifyObservers;
|
||||
end;
|
||||
|
||||
destructor TProfileDirServiceProvider.Destroy;
|
||||
begin
|
||||
FProfileDirLock.Free;
|
||||
inherited;
|
||||
end;
|
||||
|
||||
procedure TProfileDirServiceProvider.SetProfileDir(aProfileDir: nsIFile);
|
||||
var
|
||||
{$IFDEF MOZ_PROFILELOCKING}
|
||||
dirToLock: nsILocalFile;
|
||||
{$ENDIF}
|
||||
observerService: nsIObserverService;
|
||||
begin
|
||||
try
|
||||
if Assigned(FProfileDir) then
|
||||
begin
|
||||
if Assigned(aProfileDir) and
|
||||
aProfileDir.Equals(FProfileDir) then
|
||||
begin
|
||||
Exit;
|
||||
end;
|
||||
{$IFDEF MOZ_PROFILELOCKING}
|
||||
FProfileDirLock.Unlock();
|
||||
{$ENDIF}
|
||||
UndefineFileLocations;
|
||||
end;
|
||||
FProfileDir := aProfileDir;
|
||||
if not Assigned(FProfileDir) then
|
||||
begin
|
||||
Exit;
|
||||
end;
|
||||
|
||||
{$IFDEF MOZ_PROFILELOCKING}
|
||||
Result := InitProfileDir(FProfileDir);
|
||||
if NS_FAILED(Result) then Exit;
|
||||
|
||||
if FSharingEnabled then
|
||||
Result := FNonSharedProfileDir.QueryInterface(nsILocalFile, dirToLock)
|
||||
else
|
||||
Result := FNonSharedProfileDir.QueryInterface(nsILocalFile, dirToLock);
|
||||
if NS_FAILED(Result) then Exit;
|
||||
Result := FProfileDirLock.Lock(dirToLock);
|
||||
if NS_FAILED(Result) then Exit;
|
||||
{$ENDIF}
|
||||
|
||||
if FNotifyObservers then
|
||||
begin
|
||||
NS_GetService('@mozilla.org/observer-service;1', nsIObserverService, observerService);
|
||||
|
||||
observerService.NotifyObservers(nil, 'profile-do-change', 'startup');
|
||||
observerService.NotifyObservers(nil, 'profile-after-change', 'startup');
|
||||
end;
|
||||
|
||||
except
|
||||
raise EGeckoProfileError.CreateRes(PResStringRec(@SSetProfileDirError));
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TProfileDirServiceProvider.Register;
|
||||
var
|
||||
directoryService: nsIDirectoryService;
|
||||
begin
|
||||
NS_GetService(NS_DIRECTORY_SERVICE_CONTRACTID,
|
||||
nsIDirectoryService,
|
||||
directoryService);
|
||||
try
|
||||
directoryService.RegisterProvider(Self);
|
||||
except
|
||||
raise EGeckoProfileError.CreateRes(PResStringRec(@SProfileRegisterError));
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TProfileDirServiceProvider.Shutdown;
|
||||
var
|
||||
observerService: nsIObserverService;
|
||||
begin
|
||||
NS_GetService('@mozilla.org/observer-service;1',
|
||||
nsIObserverService,
|
||||
observerService);
|
||||
try
|
||||
observerService.NotifyObservers(nil, 'profile-before-change', 'shutdown-persist');
|
||||
except
|
||||
raise EGeckoProfileError.CreateRes(PResStringRec(@SProfileShutdownError));
|
||||
end;
|
||||
end;
|
||||
|
||||
function TProfileDirServiceProvider.GetFile(const prop: PAnsiChar; out persistent: PRBool): nsIFile;
|
||||
var
|
||||
localFile: nsIFile;
|
||||
domainDir: nsIFile;
|
||||
appendStr: IInterfacedCString;
|
||||
const
|
||||
PREFS_FILE_50_NAME =' prefs.js';
|
||||
USER_CHROME_DIR_50_NAME = 'chrome';
|
||||
LOCAL_STORE_FILE_50_NAME = 'localstore.rdf';
|
||||
HISTORY_FILE_50_NAME = 'history.dat';
|
||||
PANELS_FILE_50_NAME = 'panels.rdf';
|
||||
MIME_TYPES_FILE_50_NAME = 'mimeTypes.rdf';
|
||||
BOOKMARKS_FILE_50_NAME = 'bookmark.html';
|
||||
DOWNLOADS_FILE_50_NAME = 'downloads.rdf';
|
||||
SEARCH_FILE_50_NAME = 'search.rdf';
|
||||
MAIL_DIR_50_NAME = 'Mail';
|
||||
IMAP_MAIL_DIR_50_NAME = 'ImapMail';
|
||||
NEWS_DIR_50_NAME = 'News';
|
||||
MSG_FOLDER_CACHE_DIR_50_NAME = 'panacea.dat';
|
||||
begin
|
||||
appendStr := NewCString;
|
||||
|
||||
persistent := True;
|
||||
domainDir := FProfileDir;
|
||||
|
||||
Assert(Assigned(domainDir));
|
||||
|
||||
if prop = NS_APP_PREFS_50_DIR then
|
||||
begin
|
||||
localFile := domainDir.Clone();
|
||||
end else
|
||||
if prop = NS_APP_PREFS_50_FILE then
|
||||
begin
|
||||
localFile := domainDir.Clone();
|
||||
appendStr.Assign(PREFS_FILE_50_NAME);
|
||||
localFile.AppendNative(appendStr.ACString);
|
||||
end else
|
||||
if prop = NS_APP_USER_PROFILE_50_DIR then
|
||||
begin
|
||||
localFile := domainDir.Clone();
|
||||
end else
|
||||
if prop = NS_APP_USER_CHROME_DIR then
|
||||
begin
|
||||
localFile := domainDir.Clone();
|
||||
appendStr.Assign(USER_CHROME_DIR_50_NAME);
|
||||
localFile.AppendNative(appendStr.ACString);
|
||||
end else
|
||||
if prop = NS_APP_LOCALSTORE_50_FILE then
|
||||
begin
|
||||
localFile := domainDir.Clone();
|
||||
appendStr.Assign(LOCAL_STORE_FILE_50_NAME);
|
||||
localFile.AppendNative(appendStr.ACString);
|
||||
EnsureProfileFileExists(localFile, domainDir);
|
||||
end else
|
||||
if prop = NS_APP_HISTORY_50_FILE then
|
||||
begin
|
||||
localFile := domainDir.Clone();
|
||||
appendStr.Assign(HISTORY_FILE_50_NAME);
|
||||
localFile.AppendNative(appendStr.ACString);
|
||||
end else
|
||||
if prop = NS_APP_USER_PANELS_50_FILE then
|
||||
begin
|
||||
localFile := domainDir.Clone();
|
||||
appendStr.Assign(PANELS_FILE_50_NAME);
|
||||
localFile.AppendNative(appendStr.ACString);
|
||||
EnsureProfileFileExists(localFile, domainDir);
|
||||
end else
|
||||
if prop = NS_APP_USER_MIMETYPES_50_FILE then
|
||||
begin
|
||||
localFile := domainDir.Clone();
|
||||
appendStr.Assign(MIME_TYPES_FILE_50_NAME);
|
||||
localFile.AppendNative(appendStr.ACString);
|
||||
EnsureProfileFileExists(localFile, domainDir);
|
||||
end else
|
||||
if prop = NS_APP_BOOKMARKS_50_FILE then
|
||||
begin
|
||||
localFile := domainDir.Clone();
|
||||
appendStr.Assign(BOOKMARKS_FILE_50_NAME);
|
||||
localFile.AppendNative(appendStr.ACString);
|
||||
end else
|
||||
if prop = NS_APP_DOWNLOADS_50_FILE then
|
||||
begin
|
||||
localFile := domainDir.Clone();
|
||||
appendStr.Assign(DOWNLOADS_FILE_50_NAME);
|
||||
localFile.AppendNative(appendStr.ACString);
|
||||
end else
|
||||
if prop = NS_APP_SEARCH_50_FILE then
|
||||
begin
|
||||
localFile := domainDir.Clone();
|
||||
appendStr.Assign(SEARCH_FILE_50_NAME);
|
||||
localFile.AppendNative(appendStr.ACString);
|
||||
EnsureProfileFileExists(localFile, domainDir);
|
||||
end else
|
||||
if prop = NS_APP_MAIL_50_DIR then
|
||||
begin
|
||||
localFile := domainDir.Clone();
|
||||
appendStr.Assign(MAIL_DIR_50_NAME);
|
||||
localFile.AppendNative(appendStr.ACString);
|
||||
end else
|
||||
if prop = NS_APP_IMAP_MAIL_50_DIR then
|
||||
begin
|
||||
localFile := domainDir.Clone();
|
||||
appendStr.Assign(IMAP_MAIL_DIR_50_NAME);
|
||||
localFile.AppendNative(appendStr.ACString);
|
||||
end else
|
||||
if prop = NS_APP_NEWS_50_DIR then
|
||||
begin
|
||||
localFile := domainDir.Clone();
|
||||
appendStr.Assign(NEWS_DIR_50_NAME);
|
||||
localFile.AppendNative(appendStr.ACString);
|
||||
end else
|
||||
if prop = NS_APP_MESSENGER_FOLDER_CACHE_50_DIR then
|
||||
begin
|
||||
localFile := domainDir.Clone();
|
||||
appendStr.Assign(MSG_FOLDER_CACHE_DIR_50_NAME);
|
||||
localFile.AppendNative(appendStr.ACString);
|
||||
end;
|
||||
|
||||
if Assigned(localFile) then
|
||||
Result := localFile as nsIFile;
|
||||
end;
|
||||
|
||||
procedure TProfileDirServiceProvider.Initialize;
|
||||
begin
|
||||
{$IFDEF MOZ_PROFILELOCKING}
|
||||
FProfileDir := TProfileDirServiceProvider.Create(FNotifyObservers);
|
||||
{$ENDIF}
|
||||
end;
|
||||
|
||||
procedure TProfileDirServiceProvider.InitProfileDir(profileDir: nsIFile);
|
||||
var
|
||||
exists: PRBool;
|
||||
profileDefaultsDir: nsIFile;
|
||||
profileDirParent: nsIFile;
|
||||
profileDirName: IInterfacedCString;
|
||||
isDir: PRBool;
|
||||
begin
|
||||
try
|
||||
profileDirName := NewCString;
|
||||
|
||||
exists := profileDir.Exists();
|
||||
|
||||
if not exists then
|
||||
begin
|
||||
profileDirParent := profileDir.Parent;
|
||||
profileDir.GetNativeLeafName(profileDirName.ACString);
|
||||
|
||||
try
|
||||
profileDefaultsDir := NS_GetSpecialDirectory(NS_APP_PROFILE_DEFAULTS_50_DIR);
|
||||
except
|
||||
profileDefaultsDir := NS_GetSpecialDirectory(NS_APP_PROFILE_DEFAULTS_NLOC_50_DIR);
|
||||
end;
|
||||
try
|
||||
profileDefaultsDir.CopyToNative(profileDirParent, profileDirName.ACString);
|
||||
except
|
||||
profileDirParent.AppendNative(profileDirName.ACString);
|
||||
profileDirParent.Create(NS_IFILE_DIRECTORY_TYPE, 7 shl 6);
|
||||
end;
|
||||
end else
|
||||
begin
|
||||
isDir := profileDir.IsDirectory();
|
||||
if not isDir then
|
||||
raise EGeckoProfileError.CreateRes(PResStringRec(@SNotADirectory));
|
||||
end;
|
||||
|
||||
if FNonSharedDirName.Length > 0 then
|
||||
InitNonSharedProfileDir;
|
||||
except
|
||||
on EGeckoError do raise
|
||||
else raise EGeckoProfileError.CreateRes(PResStringRec(@SProfileInitError));
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TProfileDirServiceProvider.InitNonSharedProfileDir;
|
||||
var
|
||||
localDir: nsIFile;
|
||||
exists: PRBool;
|
||||
isDir: PRBool;
|
||||
begin
|
||||
try
|
||||
localDir := FProfileDir.Clone();
|
||||
localDir.Append(FNonSharedDirName.AString);
|
||||
exists := localDir.Exists();
|
||||
if not exists then
|
||||
begin
|
||||
localDir.Create(NS_IFILE_DIRECTORY_TYPE, 7 shl 6);
|
||||
end else
|
||||
begin
|
||||
isDir := localDir.IsDirectory();
|
||||
if not isDir then
|
||||
raise EGeckoProfileError.CreateRes(PResStringRec(@SNotADirectory));
|
||||
end;
|
||||
FNonSharedProfileDir := localDir;
|
||||
except
|
||||
on EGeckoError do raise
|
||||
else raise EGeckoProfileError.CreateRes(PResStringRec(@SProfileInitError));
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TProfileDirServiceProvider.EnsureProfileFileExists(aFile: nsIFile; destDir: nsIFile);
|
||||
var
|
||||
exists: PRBool;
|
||||
defaultsFile: nsIFile;
|
||||
leafName: IInterfacedCString;
|
||||
begin
|
||||
try
|
||||
exists := aFile.Exists;
|
||||
if exists then
|
||||
begin
|
||||
Exit;
|
||||
end;
|
||||
|
||||
try
|
||||
defaultsFile := NS_GetSpecialDirectory(NS_APP_PROFILE_DEFAULTS_50_DIR);
|
||||
except
|
||||
defaultsFile := NS_GetSpecialDirectory(NS_APP_PROFILE_DEFAULTS_NLOC_50_DIR);
|
||||
end;
|
||||
|
||||
leafName := NewCString;
|
||||
|
||||
aFile.GetNativeLeafName(leafName.ACString);
|
||||
defaultsFile.AppendNative(leafName.ACString);
|
||||
|
||||
leafName.Assign('');
|
||||
defaultsFile.CopyToNative(destDir, leafName.ACString);
|
||||
except
|
||||
on EGeckoError do raise
|
||||
else raise EGeckoProfileError.CreateRes(PResStringRec(@SEnsureProfileDirError));
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TProfileDirServiceProvider.UndefineFileLocations;
|
||||
var
|
||||
directoryService : nsIProperties;
|
||||
i: Integer;
|
||||
const
|
||||
NUM_OF_DIRS = 15;
|
||||
Dirs: array [1..15] of PAnsiChar = (
|
||||
NS_APP_PREFS_50_DIR,
|
||||
NS_APP_PREFS_50_FILE,
|
||||
NS_APP_USER_PROFILE_50_DIR,
|
||||
NS_APP_USER_CHROME_DIR,
|
||||
NS_APP_LOCALSTORE_50_FILE,
|
||||
NS_APP_HISTORY_50_FILE,
|
||||
NS_APP_USER_PANELS_50_FILE,
|
||||
NS_APP_USER_MIMETYPES_50_FILE,
|
||||
NS_APP_BOOKMARKS_50_FILE,
|
||||
NS_APP_DOWNLOADS_50_FILE,
|
||||
NS_APP_SEARCH_50_FILE,
|
||||
NS_APP_MAIL_50_DIR,
|
||||
NS_APP_IMAP_MAIL_50_DIR,
|
||||
NS_APP_NEWS_50_DIR,
|
||||
NS_APP_MESSENGER_FOLDER_CACHE_50_DIR
|
||||
);
|
||||
begin
|
||||
NS_GetService(NS_DIRECTORY_SERVICE_CONTRACTID,
|
||||
nsIProperties,
|
||||
directoryService);
|
||||
|
||||
for I:=1 to NUM_OF_DIRS do
|
||||
try
|
||||
directoryService.Undefine(Dirs[I]);
|
||||
except
|
||||
end;
|
||||
end;
|
||||
|
||||
function TProfileDirServiceProvider.SafeCallException(ExceptObject: TObject; ExceptAddr: Pointer): HResult;
|
||||
begin
|
||||
Result := HResult(NS_ERROR_FAILURE);
|
||||
end;
|
||||
|
||||
function NS_NewProfileDirServiceProvider(aNotifyObservers: PRBool): nsProfileDirServiceProvider;
|
||||
var
|
||||
prov: TProfileDirServiceProvider;
|
||||
begin
|
||||
prov := TProfileDirServiceProvider.Create(aNotifyObservers);
|
||||
|
||||
prov.Initialize;
|
||||
Result := prov;
|
||||
prov.FNotifyObservers := aNotifyObservers;
|
||||
end;
|
||||
|
||||
end.
|
401
components/geckoport/version2/nsStream.pas
Executable file
401
components/geckoport/version2/nsStream.pas
Executable file
@ -0,0 +1,401 @@
|
||||
(* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla 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/MPL/
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* The Initial Developer of the Original Code is
|
||||
* Netscape Communications Corpotation.
|
||||
* Portions created by the Initial Developer are Copyright (C) 1998
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
* Takanori Itou <necottie@nesitive.net>
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** *)
|
||||
unit nsStream;
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
nsXPCOM, Classes,nsTypes;
|
||||
|
||||
function NS_NewByteArrayInputStream(out stream: nsIInputStream; const Buffer: Pointer; Size: Longword): nsresult;
|
||||
function NS_NewInputStreamFromTStream(input: TStream; own: Boolean=False): nsIInputStream;
|
||||
function NS_NewOutputStreamFromTStream(output: TStream; own: Boolean=False): nsIOutputStream;
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
Math, nsMemory, nsError, SysUtils;
|
||||
|
||||
type
|
||||
nsByteArrayInputStream = class(TInterfacedObject,
|
||||
nsIInputStream)
|
||||
FBuffer: PByte;
|
||||
FNBytes: Longword;
|
||||
FPos: Longword;
|
||||
|
||||
constructor Create(const Buffer: Pointer; nBytes: Longword);
|
||||
destructor Destroy; override;
|
||||
|
||||
procedure Close(); safecall;
|
||||
function Available(): PRUint32; safecall;
|
||||
function Read(aBuf: PAnsiChar; aCount: Longword): PRUint32; safecall;
|
||||
function ReadSegments(aWriter: nsWriteSegmentFun; aClosure: Pointer; aCount: Longword): PRUint32; safecall;
|
||||
function IsNonBlocking(): PRBool; safecall;
|
||||
end;
|
||||
|
||||
constructor nsByteArrayInputStream.Create(const Buffer: Pointer; nBytes: Longword);
|
||||
begin
|
||||
inherited Create;
|
||||
FBuffer := PByte(Buffer);
|
||||
FNBytes := nBytes;
|
||||
FPos := 0;
|
||||
end;
|
||||
|
||||
destructor nsByteArrayInputStream.Destroy;
|
||||
begin
|
||||
if Assigned(FBuffer) then
|
||||
nsMemory.Free(FBuffer);
|
||||
inherited;
|
||||
end;
|
||||
|
||||
function nsByteArrayInputStream.Available(): PRUint32;
|
||||
begin
|
||||
if (FNBytes=0) or not Assigned(FBuffer) then
|
||||
Result := 0
|
||||
else
|
||||
Result := FNBytes - FPos;
|
||||
end;
|
||||
|
||||
procedure CopyMemory(var ADst; const ASrc; ASize: Integer); register; forward;
|
||||
|
||||
function nsByteArrayInputStream.Read(aBuf: PAnsiChar;
|
||||
aCount: Longword): PRUint32;
|
||||
begin
|
||||
if (aCount=0) or (FPos = FNBytes) then
|
||||
Result := 0
|
||||
else
|
||||
begin
|
||||
Assert(Assigned(FBuffer), 'Stream buffer has been released - there''s an ownership problem somewhere!');
|
||||
if not Assigned(FBuffer) then
|
||||
Result := 0
|
||||
else
|
||||
if aCount > (FNBytes - FPos) then
|
||||
begin
|
||||
Result := FNBytes - FPos;
|
||||
CopyMemory(aBuf^, FBuffer^, Result);
|
||||
FPos := FNBytes;
|
||||
end else
|
||||
begin
|
||||
Result := aCount;
|
||||
CopyMemory(aBuf^, FBuffer^, Result);
|
||||
Inc(FPos, aCount);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
function nsByteArrayInputStream.ReadSegments(aWriter: nsWriteSegmentFun;
|
||||
aClosure: Pointer;
|
||||
aCount: Longword): PRUint32;
|
||||
var
|
||||
readCount: Longword;
|
||||
rv: Longword;
|
||||
newPtr: PByte;
|
||||
begin
|
||||
if FNBytes=0 then
|
||||
raise EInvalidArgument.Create('nsIInputStream.ReadSegments');
|
||||
|
||||
if (aCount=0) or (FNBytes = FPos) then
|
||||
Result := 0
|
||||
else
|
||||
begin
|
||||
Assert(Assigned(FBuffer), 'Stream buffer has been released - there''s an ownership problem somewhere!');
|
||||
readCount := Min(aCount, FNBytes - FPos);
|
||||
if not Assigned(FBuffer) then
|
||||
Result := 0
|
||||
else
|
||||
begin
|
||||
newPtr := FBuffer;
|
||||
Inc(newPtr, FPos);
|
||||
rv := aWriter(Self, aClosure, PChar(newPtr), FPos, readCount, Result);
|
||||
if NS_SUCCEEDED(rv) then
|
||||
Inc(FPos, readCount);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
function nsByteArrayInputStream.IsNonBlocking(): PRBool;
|
||||
begin
|
||||
Result := True;
|
||||
end;
|
||||
|
||||
procedure nsByteArrayInputStream.Close;
|
||||
begin
|
||||
if Assigned(FBuffer) then
|
||||
begin
|
||||
nsMemory.Free(FBuffer);
|
||||
FBuffer := nil;
|
||||
FNBytes := 0;
|
||||
end else
|
||||
raise Exception.Create('nsIInputStream.Close')
|
||||
end;
|
||||
|
||||
function NS_NewByteArrayInputStream(out stream: nsIInputStream; const Buffer: Pointer; Size: Longword): nsresult;
|
||||
begin
|
||||
try
|
||||
stream := nsByteArrayInputStream.Create(Buffer, Size);
|
||||
except
|
||||
Result := NS_ERROR_OUT_OF_MEMORY;
|
||||
Exit;
|
||||
end;
|
||||
|
||||
Result := NS_OK;
|
||||
end;
|
||||
|
||||
type
|
||||
TInputStream = class(TInterfacedObject,
|
||||
nsIInputStream)
|
||||
FStream: TStream;
|
||||
FOwn: Boolean;
|
||||
constructor Create(stream: TStream; own: Boolean);
|
||||
destructor Destroy; override;
|
||||
|
||||
// nsIInputStream
|
||||
procedure Close(); safecall;
|
||||
function Available(): PRUint32; safecall;
|
||||
function Read(aBuf: PAnsiChar; aCount: PRUint32): PRUint32; safecall;
|
||||
function ReadSegments(aWriter: nsWriteSegmentFun; aClosure: Pointer; aCount: PRUint32): PRUint32; safecall;
|
||||
function IsNonBlocking(): PRBool; safecall;
|
||||
end;
|
||||
|
||||
constructor TInputStream.Create(stream: TStream; own: Boolean);
|
||||
begin
|
||||
inherited Create;
|
||||
FStream := stream;
|
||||
FOwn := own;
|
||||
end;
|
||||
|
||||
destructor TInputStream.Destroy;
|
||||
begin
|
||||
if FOwn then
|
||||
FStream.Free;
|
||||
inherited;
|
||||
end;
|
||||
|
||||
procedure TInputStream.Close;
|
||||
begin
|
||||
if FOwn then
|
||||
begin
|
||||
FStream.Free;
|
||||
FOwn := False;
|
||||
end;
|
||||
FStream := nil;
|
||||
end;
|
||||
|
||||
function TInputStream.Available: PRUint32;
|
||||
var
|
||||
size, pos: Int64;
|
||||
begin
|
||||
size := FStream.Size;
|
||||
pos := FStream.Position;
|
||||
if size>0 then
|
||||
begin
|
||||
Result := PRUint32(size-pos);
|
||||
end else
|
||||
begin
|
||||
Result := High(PRUint32);
|
||||
end;
|
||||
end;
|
||||
|
||||
function TInputStream.Read(aBuf: PAnsiChar; aCount: PRUint32): PRUint32;
|
||||
begin
|
||||
Result := FStream.Read(aBuf^, aCount);
|
||||
end;
|
||||
|
||||
function TInputStream.ReadSegments(aWriter: nsWriteSegmentFun;
|
||||
aClosure: Pointer; aCount: PRUint32): PRUint32;
|
||||
type
|
||||
nsWriteSegmentFunc = function (aInStream: nsIInputStream;
|
||||
aClosure: Pointer;
|
||||
const aFromSegment: Pointer;
|
||||
aToOffset: PRUint32;
|
||||
aCount: PRUint32
|
||||
): PRUint32; safecall;
|
||||
|
||||
var
|
||||
data: Pointer;
|
||||
begin
|
||||
data := nsMemory.Alloc(aCount);
|
||||
try
|
||||
aCount := FStream.Read(data^, aCount);
|
||||
Result := nsWriteSegmentFunc(aWriter)(
|
||||
Self, aClosure, data, FStream.Position, aCount);
|
||||
finally
|
||||
nsMemory.Free(data);
|
||||
end;
|
||||
end;
|
||||
|
||||
function TInputStream.IsNonBlocking: PRBool;
|
||||
begin
|
||||
Result := True;
|
||||
end;
|
||||
|
||||
function NS_NewInputStreamFromTStream(input: TStream; own: Boolean): nsIInputStream;
|
||||
begin
|
||||
Result := TInputStream.Create(input, own);
|
||||
end;
|
||||
|
||||
type
|
||||
TOutputStream = class(TInterfacedObject,
|
||||
nsIOutputStream)
|
||||
FStream: TStream;
|
||||
FOwn: Boolean;
|
||||
|
||||
constructor Create(output: TStream; own: Boolean);
|
||||
destructor Destroy; override;
|
||||
|
||||
procedure Close(); safecall;
|
||||
procedure Flush(); safecall;
|
||||
function Write(const aBuf: PAnsiChar; aCount: PRUint32): PRUint32; safecall;
|
||||
function WriteFrom(aFromStream: nsIInputStream; aCount: PRUint32): PRUint32; safecall;
|
||||
function WriteSegments(aReader: nsReadSegmentFun; aClosure: Pointer; aCount: PRUint32): PRUint32; safecall;
|
||||
function IsNonBlocking(): PRBool; safecall;
|
||||
end;
|
||||
|
||||
constructor TOutputStream.Create(output: TStream; own: Boolean);
|
||||
begin
|
||||
inherited Create;
|
||||
FStream := output;
|
||||
FOwn := own;
|
||||
end;
|
||||
|
||||
destructor TOutputStream.Destroy;
|
||||
begin
|
||||
if FOwn then
|
||||
FStream.Free;
|
||||
inherited;
|
||||
end;
|
||||
|
||||
procedure TOutputStream.Close;
|
||||
begin
|
||||
if FOwn then
|
||||
begin
|
||||
FStream.Free;
|
||||
FOwn := False;
|
||||
end;
|
||||
FStream := nil;
|
||||
end;
|
||||
|
||||
procedure TOutputStream.Flush;
|
||||
begin
|
||||
end;
|
||||
|
||||
function TOutputStream.Write(const aBuf: PAnsiChar; aCount: PRUint32): PRUint32;
|
||||
begin
|
||||
Result := FStream.Write(aBuf^, aCount);
|
||||
end;
|
||||
|
||||
function TOutputStream.WriteFrom(aFromStream: nsIInputStream; aCount: PRUint32): PRUint32;
|
||||
var
|
||||
data: Pointer;
|
||||
begin
|
||||
data := nsMemory.Alloc(aCount);
|
||||
try
|
||||
aCount := aFromStream.Read(data, aCount);
|
||||
Result := FStream.Write(data^, aCount);
|
||||
finally
|
||||
nsMemory.Free(data);
|
||||
end;
|
||||
end;
|
||||
|
||||
function TOutputStream.WriteSegments(aReader: nsReadSegmentFun;
|
||||
aClosure: Pointer; aCount: PRUint32): PRUint32;
|
||||
type
|
||||
nsReadSegmentFunc = function (aOutStream: nsIOutputStream;
|
||||
aClosure: Pointer;
|
||||
aToSegment: Pointer;
|
||||
aFromOffset: PRUint32;
|
||||
aCount: PRUint32
|
||||
): PRUint32; safecall;
|
||||
var
|
||||
data: Pointer;
|
||||
begin
|
||||
data := nsMemory.Alloc(aCount);
|
||||
try
|
||||
aCount := nsReadSegmentFunc(aReader)
|
||||
(Self, aClosure, data, FStream.Position, aCount);
|
||||
Result := FStream.Write(data^, aCount);
|
||||
finally
|
||||
nsMemory.Free(data);
|
||||
end;
|
||||
end;
|
||||
|
||||
function TOutputStream.IsNonBlocking: PRBool;
|
||||
begin
|
||||
Result := True;
|
||||
end;
|
||||
|
||||
function NS_NewOutputStreamFromTStream(output: TStream; own: Boolean): nsIOutputStream;
|
||||
begin
|
||||
Result := TOutputStream.Create(output, own);
|
||||
end;
|
||||
|
||||
|
||||
{$IFDEF CPU386} //Should be defined with both Delphi and Intel FPC.
|
||||
procedure CopyMemory(var ADst; const ASrc; ASize: Integer);
|
||||
asm
|
||||
push edi
|
||||
push esi
|
||||
pushf
|
||||
|
||||
mov edi, eax
|
||||
mov esi, edx
|
||||
mov edx, ecx
|
||||
shr ecx, 2
|
||||
cld
|
||||
test ecx, ecx
|
||||
jz @@no4
|
||||
|
||||
rep movsd
|
||||
@@no4:
|
||||
and edx, 3
|
||||
test edx, edx
|
||||
jz @@no1
|
||||
mov ecx, edx
|
||||
rep movsb
|
||||
@@no1:
|
||||
popf
|
||||
pop esi
|
||||
pop edi
|
||||
end;
|
||||
{$ELSE}
|
||||
procedure CopyMemory(var ADst; const ASrc; ASize: Integer);
|
||||
begin
|
||||
Move(ASrc, ADst, ASize);
|
||||
end;
|
||||
{$ENDIF}
|
||||
|
||||
end.
|
273
components/geckoport/version2/nsThreadUtils.pas
Normal file
273
components/geckoport/version2/nsThreadUtils.pas
Normal file
@ -0,0 +1,273 @@
|
||||
unit nsThreadUtils;
|
||||
|
||||
{$MACRO on}
|
||||
|
||||
{$IFDEF Windows}
|
||||
{$DEFINE extdecl:=stdcall}
|
||||
{$ELSE Windows}
|
||||
{$DEFINE extdecl:=cdecl}
|
||||
{$ENDIF}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
nsXPCOM, nsTypes, nsGeckoStrings;
|
||||
|
||||
type
|
||||
nsIEnvironment = interface;
|
||||
nsIEventTarget = interface;
|
||||
nsIProcess = interface;
|
||||
nsIRunnable = interface;
|
||||
nsISupportsPriority = interface;
|
||||
nsIThread = interface;
|
||||
nsIThreadInternal = interface;
|
||||
nsIThreadObserver = interface;
|
||||
nsIThreadEventFilter = interface;
|
||||
nsIThreadManager = interface;
|
||||
nsIThreadPoolListener = interface;
|
||||
nsIThreadPool = interface;
|
||||
nsITimer = interface;
|
||||
|
||||
nsIEnvironment = interface(nsISupports)
|
||||
['{101d5941-d820-4e85-a266-9a3469940807}']
|
||||
procedure _set(aName: nsAString; aValue: nsAString); safecall;
|
||||
procedure get(aName: nsAString; aResult: nsAString); safecall;
|
||||
function exists(aName: nsAString): PRBool; safecall;
|
||||
end;
|
||||
|
||||
nsIEventTarget = interface(nsISupports)
|
||||
['{4e8febe4-6631-49dc-8ac9-308c1cb9b09c}']
|
||||
procedure dispatch(event: nsIRunnable; flags: PRUint32); safecall;
|
||||
function isOnCurrentThread(): PRBool; safecall;
|
||||
end;
|
||||
|
||||
nsIProcess = interface(nsISupports)
|
||||
['{9da0b650-d07e-4617-a18a-250035572ac8}']
|
||||
procedure init(aExecutable: nsIFile); safecall;
|
||||
procedure initWithPid(aPid: PRUint32); safecall;
|
||||
procedure kill(); safecall;
|
||||
function run(aBlocking: PRBool; aArgs: PAnsiCharArray; aCount: PRUint32): PRUint32; safecall;
|
||||
function getLocation(): nsIFile; safecall;
|
||||
property location: nsIFile read getLocation;
|
||||
function getPid(): PRUint32; safecall;
|
||||
property pid: PRUint32 read getPid;
|
||||
function getProcessName(): PAnsiChar; safecall;
|
||||
property processName: PAnsiChar read getProcessName;
|
||||
function getProcessSignature: PRUint32; safecall;
|
||||
property processSignature: PRUint32 read getProcessSignature;
|
||||
function getExitValue: PRInt32; safecall;
|
||||
property exitValue: PRInt32 read getExitValue;
|
||||
end;
|
||||
|
||||
nsIRunnable = interface(nsISupports)
|
||||
['{4a2abaf0-6886-11d3-9382-00104ba0fd40}']
|
||||
procedure run(); safecall;
|
||||
end;
|
||||
|
||||
nsISupportsPriority = interface(nsISupports)
|
||||
['{aa578b44-abd5-4c19-8b14-36d4de6fdc36}']
|
||||
function getPriority: PRInt32; safecall;
|
||||
procedure setPriority(aValue: PRInt32); safecall;
|
||||
property priority: PRInt32 read getPriority write setPriority;
|
||||
procedure adjustPriority(aDelta: PRInt32); safecall;
|
||||
end;
|
||||
|
||||
nsIThread = interface(nsIEventTarget)
|
||||
['{9c889946-a73a-4af3-ae9a-ea64f7d4e3ca}']
|
||||
function getPRThread: Pointer; safecall;
|
||||
property PRThread: Pointer read getPRThread;
|
||||
procedure shutdown(); safecall;
|
||||
function hasPendingEvents(): PRBool; safecall;
|
||||
function processNextEvent(mayWait: PRBool): PRBool; safecall;
|
||||
end;
|
||||
|
||||
nsIThreadInternal = interface(nsISupports)
|
||||
['{f89b5063-b06d-42f8-bf23-4dfcf2d80d6a}']
|
||||
function getObserver: nsIThreadObserver; safecall;
|
||||
procedure setObserver(aValue: nsIThreadObserver); safecall;
|
||||
property observer: nsIThreadObserver read getObserver write setObserver;
|
||||
procedure pushEventQueue(aFilter: nsIThreadEventFilter); safecall;
|
||||
procedure popEventQueue(); safecall;
|
||||
end;
|
||||
|
||||
nsIThreadObserver = interface(nsISupports)
|
||||
['{81D0B509-F198-4417-8020-08EB4271491F}']
|
||||
procedure onDispatchedEvent(aThread: nsIThreadInternal); safecall;
|
||||
procedure onProcessNextEvent(aThread: nsIThreadInternal; aMayWait: PRBool; aRecursionDepth: PRUint32); safecall;
|
||||
procedure afterProcessNextEvent(aThread: nsIThreadInternal; aRecursionDepth: PRUint32); safecall;
|
||||
end;
|
||||
|
||||
nsIThreadEventFilter = interface(nsISupports)
|
||||
['{a0605c0b-17f5-4681-b8cd-a1cd75d42559}']
|
||||
function acceptEvent(aEvent: nsIRunnable): PRBool; extdecl;
|
||||
end;
|
||||
|
||||
nsIThreadManager = interface(nsISupports)
|
||||
['{056216f5-8803-46b4-9199-d95bc1f0446f}']
|
||||
function newThread(creationFlag: PRUint32): nsIThread; safecall;
|
||||
function getThreadFromPRThread(prthread: Pointer): nsIThread; safecall;
|
||||
function getMainThread(): nsIThread; safecall;
|
||||
property mainThread: nsIThread read getMainThread;
|
||||
function getCurrentThread: nsIThread; safecall;
|
||||
property currentThread: nsIThread read getCurrentThread;
|
||||
function getIsMainThread: PRBool; safecall;
|
||||
property isMainThread: PRbool read getIsMainThread;
|
||||
end;
|
||||
|
||||
nsIThreadPoolListener = interface(nsISupports)
|
||||
['{ef194cab-3f86-4b61-b132-e5e96a79e5d1}']
|
||||
procedure onThreadCreated(); safecall;
|
||||
procedure onThreadShuttingDown(); safecall;
|
||||
end;
|
||||
|
||||
nsIThreadPool = interface(nsIEventTarget)
|
||||
['{394c29f0-225f-487f-86d3-4c259da76cab}']
|
||||
procedure shutdown(); safecall;
|
||||
function getThreadLimit(): PRUint32; safecall;
|
||||
procedure setThreadLimit(aValue: PRUint32); safecall;
|
||||
property threadLimit: PRUint32 read getThreadLimit write setThreadLimit;
|
||||
function getIdleThreadLimit(): PRUint32; safecall;
|
||||
procedure setIdleThreadLimit(aValue: PRUint32); safecall;
|
||||
property idleThreadLimit: PRUint32 read getIdleThreadLimit write setIdleThreadLimit;
|
||||
function getIdleThreadTimeout(): PRUint32; safecall;
|
||||
procedure setIdleThreadTimeout(aValue: PRUint32); safecall;
|
||||
property idleThreadTimeout: PRUint32 read getIdleThreadTimeout write setIdleThreadTimeout;
|
||||
function getListener: nsIThreadPoolListener; safecall;
|
||||
procedure setListener(aValue: nsIThreadPoolListener); safecall;
|
||||
property listener: nsIThreadPoolListener read getListener write setListener;
|
||||
end;
|
||||
|
||||
nsITimer = interface(nsISupports)
|
||||
['{a796816d-7d47-4348-9ab8-c7aeb3216a7d}']
|
||||
procedure notify(aTimer: nsITimer); safecall;
|
||||
end;
|
||||
|
||||
const
|
||||
NS_IEVENTTARGET_DISPATCH_NORMAL = 0;
|
||||
NS_IEVENTTARGET_DISPATCH_SYNC = 1;
|
||||
|
||||
NS_ISUPPORTSPRIORITY_PRIORITY_HIGHEST = -20;
|
||||
NS_ISUPPORTSPRIORITY_PRIORITY_HIGH = -10;
|
||||
NS_ISUPPORTSPRIORITY_PRIORITY_NORMAL = 0;
|
||||
NS_ISUPPORTSPRIORITY_PRIORITY_LOW = 10;
|
||||
NS_ISUPPORTSPRIORITY_PRIORITY_LOWEST = 20;
|
||||
|
||||
const
|
||||
NS_THREADMANAGER_CONTRACTID = '@mozilla.org/thread-manager;1';
|
||||
|
||||
NS_DISPATCH_NORMAL = NS_IEVENTTARGET_DISPATCH_NORMAL;
|
||||
NS_DISPATCH_SYNC = NS_IEVENTTARGET_DISPATCH_SYNC;
|
||||
|
||||
type
|
||||
nsTimerCallbackFunc = procedure (aTimer: nsITimer; aClosure: Pointer); cdecl;
|
||||
|
||||
function NS_NewThread(aInitialEvent: nsIRunnable = nil): nsIThread;
|
||||
function NS_GetCurrentThread(): nsIThread;
|
||||
function NS_GetMainThread(): nsIThread;
|
||||
function NS_IsMainThread(): PRBool;
|
||||
procedure NS_DispatchToCurrentThread(aEvent: nsIRunnable);
|
||||
procedure NS_DispatchToMainThread(aEvent: nsIRunnable;
|
||||
aDispatchFlags: PRUint32 = NS_DISPATCH_NORMAL);
|
||||
procedure NS_ProcessPendingEvents(aThread: nsIThread;
|
||||
aTimeout: PRUint32 = $ffffffff);
|
||||
// const PR_INTERVAL_NO_TIMEOUT = $ffffffff;
|
||||
function NS_HasPendingEvents(aThread: nsIThread = nil): PRBool;
|
||||
function NS_ProcessNextEvent(aThread: nsIThread = nil;
|
||||
aMayWait: PRBool = True): PRBool;
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
nsXPCOMGlue, nsError, mmsystem;
|
||||
|
||||
function NS_NewThread(aInitialEvent: nsIRunnable): nsIThread;
|
||||
var
|
||||
tm: nsIThreadManager;
|
||||
thread: nsIThread;
|
||||
begin
|
||||
NS_GetService(NS_THREADMANAGER_CONTRACTID, nsIThreadManager, tm);
|
||||
thread := tm.newThread(0);
|
||||
if Assigned(aInitialEvent) then
|
||||
thread.dispatch(aInitialEvent, NS_DISPATCH_NORMAL);
|
||||
Result := thread;
|
||||
end;
|
||||
|
||||
function NS_GetCurrentThread(): nsIThread;
|
||||
var
|
||||
tm: nsIThreadManager;
|
||||
begin
|
||||
NS_GetService(NS_THREADMANAGER_CONTRACTID, nsIThreadManager, tm);
|
||||
Result := tm.currentThread;
|
||||
end;
|
||||
|
||||
function NS_GetMainThread(): nsIThread;
|
||||
var
|
||||
tm: nsIThreadManager;
|
||||
begin
|
||||
NS_GetService(NS_THREADMANAGER_CONTRACTID, nsIThreadManager, tm);
|
||||
Result := tm.mainThread;
|
||||
end;
|
||||
|
||||
function NS_IsMainThread(): PRBool;
|
||||
var
|
||||
tm: nsIThreadManager;
|
||||
begin
|
||||
NS_GetService(NS_THREADMANAGER_CONTRACTID, nsIThreadManager, tm);
|
||||
Result := tm.isMainThread;
|
||||
end;
|
||||
|
||||
procedure NS_DispatchToCurrentThread(aEvent: nsIRunnable);
|
||||
var
|
||||
tm: nsIThreadManager;
|
||||
thread: nsIThread;
|
||||
begin
|
||||
NS_GetService(NS_THREADMANAGER_CONTRACTID, nsIThreadManager, tm);
|
||||
thread := tm.currentThread;
|
||||
thread.dispatch(aEvent, NS_DISPATCH_NORMAL);
|
||||
end;
|
||||
|
||||
procedure NS_DispatchToMainThread(aEvent: nsIRunnable;
|
||||
aDispatchFlags: PRUint32);
|
||||
var
|
||||
tm: nsIThreadManager;
|
||||
thread: nsIThread;
|
||||
begin
|
||||
NS_GetService(NS_THREADMANAGER_CONTRACTID, nsIThreadManager, tm);
|
||||
thread := tm.mainThread;
|
||||
thread.dispatch(aEvent, aDispatchFlags);
|
||||
end;
|
||||
|
||||
procedure NS_ProcessPendingEvents(aThread: nsIThread;
|
||||
aTimeout: PRUint32);
|
||||
var
|
||||
start: PRUint32;
|
||||
processedEvent: PRBool;
|
||||
begin
|
||||
if not Assigned(aThread) then
|
||||
aThread := NS_GetCurrentThread;
|
||||
start := timeGetTime();
|
||||
while True do
|
||||
begin
|
||||
processedEvent := aThread.processNextEvent(False);
|
||||
if not ProcessedEvent then
|
||||
Break;
|
||||
if (timeGetTime()-start)>aTimeout then
|
||||
Break;
|
||||
end;
|
||||
end;
|
||||
|
||||
function NS_HasPendingEvents(aThread: nsIThread): PRBool;
|
||||
begin
|
||||
if not Assigned(aThread) then
|
||||
aThread := NS_GetCurrentThread;
|
||||
result := aThread.hasPendingEvents;
|
||||
end;
|
||||
|
||||
function NS_ProcessNextEvent(aThread: nsIThread; aMayWait: PRBool): PRBool;
|
||||
begin
|
||||
if not Assigned(aThread) then
|
||||
aThread := NS_GetCurrentThread;
|
||||
result := aThread.processNextEvent(aMayWait);
|
||||
end;
|
||||
|
||||
end.
|
125
components/geckoport/version2/nsTypes.pas
Normal file
125
components/geckoport/version2/nsTypes.pas
Normal file
@ -0,0 +1,125 @@
|
||||
(* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla 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/MPL/
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* The Initial Developer of the Original Code is
|
||||
* Netscape Communications Corpotation.
|
||||
* Portions created by the Initial Developer are Copyright (C) 1998
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
* Takanori Itou <necottie@nesitive.net>
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** *)
|
||||
unit nsTypes;
|
||||
|
||||
interface
|
||||
|
||||
type
|
||||
PRBool = LongBool;
|
||||
PRUint8 = Byte;
|
||||
PRUint16 = Word;
|
||||
PRUint32 = Longword;
|
||||
PRUint64 = Int64;
|
||||
PRTime = Int64;
|
||||
PRInt8 = Shortint;
|
||||
PRInt16 = Smallint;
|
||||
PRInt32 = Longint;
|
||||
PRInt64 = Int64;
|
||||
|
||||
nsresult = PRint32;
|
||||
nsrefcnt = PRint32;
|
||||
|
||||
{$IFNDEF FPC}
|
||||
size_t = SizeUint;
|
||||
{$ENDIF}
|
||||
{$IFDEF CPU64}
|
||||
PRSize = PtrUInt;
|
||||
{$ELSE}
|
||||
PRSize = PRUint32;
|
||||
{$ENDIF}
|
||||
|
||||
PRFileDesc = type Pointer;
|
||||
PRLibrary = type Pointer;
|
||||
|
||||
nsCoord = PRInt32;
|
||||
|
||||
nsPoint = record
|
||||
x, y: nsCoord;
|
||||
end;
|
||||
|
||||
nsRect = record
|
||||
left, top, right, bottom: nsCoord;
|
||||
end;
|
||||
|
||||
nsMargin = record
|
||||
left, top, right, bottom: nsCoord;
|
||||
end;
|
||||
|
||||
TGUIDArray = array[0..16383] of TGUID;
|
||||
|
||||
nsHashKey = type Pointer;
|
||||
|
||||
// not FROZEN interfaces
|
||||
nsIDOMCounter = interface end;
|
||||
nsIDOMRect = interface end;
|
||||
nsIDOMRGBColor = interface end;
|
||||
nsIPrintSession = interface end;
|
||||
nsIAuthPrompt = interface end;
|
||||
nsIWidget = interface end;
|
||||
|
||||
PPWideCharArray = ^PWideCharArray;
|
||||
PWideCharArray = array[0..16383] of PWideChar;
|
||||
PPAnsiCharArray = ^PAnsiCharArray;
|
||||
PAnsiCharArray = array[0..16383] of PAnsiChar;
|
||||
|
||||
PGUIDArray = array[0..16383] of PGUID;
|
||||
|
||||
PPRFileDesc = type Pointer;
|
||||
PFile = type Pointer;
|
||||
PPRLibrary = type Pointer;
|
||||
|
||||
PRUint8Array = ^PRUint8;
|
||||
|
||||
GREVersionRange = record
|
||||
lower: PAnsiChar;
|
||||
lowerInclusive: PRBool;
|
||||
upper: PAnsiChar;
|
||||
upperInclusive: PRBool;
|
||||
end;
|
||||
PGREVersionRangeArray = ^GREVersionRangeArray;
|
||||
GREVersionRangeArray = array [0..SizeOf(GREVersionRange)] of GREVersionRange;
|
||||
|
||||
GREProperty = record
|
||||
property_: PAnsiChar;
|
||||
value: PAnsiChar;
|
||||
end;
|
||||
PGREPropertyArray = ^GREPropertyArray;
|
||||
GREPropertyArray = array[0..SizeOf(GREProperty)] of GREProperty;
|
||||
|
||||
implementation
|
||||
|
||||
end.
|
4261
components/geckoport/version2/nsXPCOM.pas
Normal file
4261
components/geckoport/version2/nsXPCOM.pas
Normal file
File diff suppressed because it is too large
Load Diff
613
components/geckoport/version2/nsXPCOMGlue.pas
Normal file
613
components/geckoport/version2/nsXPCOMGlue.pas
Normal file
@ -0,0 +1,613 @@
|
||||
(* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla 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/MPL/
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* The Initial Developer of the Original Code is
|
||||
* Netscape Communications Corpotation.
|
||||
* Portions created by the Initial Developer are Copyright (C) 1998
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
* Takanori Itou <necottie@nesitive.net>
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** *)
|
||||
unit nsXPCOMGlue;
|
||||
|
||||
{$MACRO on}
|
||||
|
||||
{$IFNDEF FPC_HAS_CONSTREF}
|
||||
{$DEFINE constref:=const}
|
||||
{$ENDIF}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
nsXPCOM, nsTypes, nsGeckoStrings, SysUtils;
|
||||
|
||||
const
|
||||
(*
|
||||
* Original code: mozilla/xpcom/components/nsIServiceManager.idl
|
||||
*)
|
||||
NS_XPCOM_STARTUP_OBSERVER_ID = 'xpcom-startup';
|
||||
NS_XPCOM_SHUTDOWN_OBSERVER_ID = 'xpcom-shutdown';
|
||||
NS_XPCOM_AUTOREGISTRATION_OBSERVER_ID = 'xpcom-autoregistration';
|
||||
|
||||
(*
|
||||
* Original code: mozilla/xpcom/glue/nsMemory.h
|
||||
*)
|
||||
NS_MEMORY_CONTRACTID = '@mozilla.org/xpcom/memory-service;1';
|
||||
NS_MEMORY_CLASSNAME = 'Global Memory Service';
|
||||
NS_MEMORY_CID: TGUID = '{30a04e40-38e7-11d4-8cf5-0060b0fc14a3}';
|
||||
|
||||
(*
|
||||
* Original code: mozilla/xpcom/io/nsDirectoryServiceDefs.h
|
||||
* Rev: 1.27
|
||||
*)
|
||||
(**
|
||||
* Defines the property names for directories available from
|
||||
* nsIDirectoryService. These dirs are always available even if no
|
||||
* nsIDirectoryServiceProviders have been registered with the service.
|
||||
* Application level keys are defined in nsAppDirectoryServiceDefs.h.
|
||||
*
|
||||
* Keys whose definition ends in "DIR" or "FILE" return a single nsIFile (or
|
||||
* subclass). Keys whose definition ends in "LIST" return an nsISimpleEnumerator
|
||||
* which enumerates a list of file objects.
|
||||
*
|
||||
* Defines listed in this file are FROZEN. This list may grow.
|
||||
*)
|
||||
NS_OS_HOME_DIR = 'Home';
|
||||
NS_OS_TEMP_DIR = 'TmpD';
|
||||
NS_OS_CURRENT_WORKING_DIR = 'CurWorkD';
|
||||
NS_OS_DESKTOP_DIR = 'Desk';
|
||||
NS_OS_CURRENT_PROCESS_DIR = 'CurProcD';
|
||||
NS_XPCOM_CURRENT_PROCESS_DIR = 'XCurProcD';
|
||||
NS_XPCOM_COMPONENT_DIR = 'ComsD';
|
||||
NS_XPCOM_COMPONENT_DIR_LIST = 'ComsDL';
|
||||
NS_XPCOM_COMPONENT_REGISTRY_FILE = 'ComRegF';
|
||||
NS_XPCOM_XPTI_REGISTRY_FILE = 'XptiRegF';
|
||||
NS_XPCOM_LIBRARY_FILE = 'XpcomLib';
|
||||
NS_GRE_DIR = 'GreD';
|
||||
NS_GRE_COMPONENT_DIR = 'GreComsD';
|
||||
NS_WIN_WINDOWS_DIR = 'WinD';
|
||||
NS_WIN_HOME_DIR = NS_OS_HOME_DIR;
|
||||
NS_WIN_DESKTOP_DIR = 'DeskV';// virtual folder at the root of the namespace
|
||||
NS_WIN_PROGRAMS_DIR = 'Progs';
|
||||
NS_WIN_CONTROLS_DIR = 'Cntls';
|
||||
NS_WIN_PRINTERS_DIR = 'Prnts';
|
||||
NS_WIN_PERSONAL_DIR = 'Pers';
|
||||
NS_WIN_FAVORITES_DIR = 'Favs';
|
||||
NS_WIN_STARTUP_DIR = 'Strt';
|
||||
NS_WIN_RECENT_DIR = 'Rcnt';
|
||||
NS_WIN_SEND_TO_DIR = 'SndTo';
|
||||
NS_WIN_BITBUCKET_DIR = 'Buckt';
|
||||
NS_WIN_STARTMENU_DIR = 'Strt';
|
||||
NS_WIN_DESKTOP_DIRECTORY = 'DeskP';// file sys dir which physically stores objects on desktop
|
||||
NS_WIN_DRIVES_DIR = 'Drivs';
|
||||
NS_WIN_NETWORK_DIR = 'NetW';
|
||||
NS_WIN_NETHOOD_DIR = 'netH';
|
||||
NS_WIN_FONTS_DIR = 'Fnts';
|
||||
NS_WIN_TEMPLATES_DIR = 'Tmpls';
|
||||
NS_WIN_COMMON_STARTMENU_DIR = 'CmStrt';
|
||||
NS_WIN_COMMON_PROGRAMS_DIR = 'CmPrgs';
|
||||
NS_WIN_COMMON_STARTUP_DIR = 'CmStrt';
|
||||
NS_WIN_COMMON_DESKTOP_DIRECTORY = 'CmDeskP';
|
||||
NS_WIN_APPDATA_DIR = 'AppData';
|
||||
NS_WIN_PRINTHOOD = 'PrntHd';
|
||||
NS_WIN_COOKIES_DIR = 'CookD';
|
||||
(* Deprecated *)
|
||||
NS_OS_DRIVE_DIR = 'DrvD';
|
||||
|
||||
(*
|
||||
* Original Code: mozilla/xpcom/io/nsAppDirectoryServiceDefs.h
|
||||
* Revision: 1.16
|
||||
*)
|
||||
NS_APP_APPLICATION_REGISTRY_FILE = 'AppRegF';
|
||||
NS_APP_APPLICATION_REGISTRY_DIR = 'AppRegD';
|
||||
NS_APP_DEFAULTS_50_DIR = 'DefRt'; // The root dir of all defaults dirs
|
||||
NS_APP_PREF_DEFAULTS_50_DIR = 'PrfDef';
|
||||
NS_APP_PROFILE_DEFAULTS_50_DIR = 'profDef'; // The profile defaults of the "current"
|
||||
// locale. Should be first choice.
|
||||
NS_APP_PROFILE_DEFAULTS_NLOC_50_DIR = 'ProfDefNoLoc'; // The profile defaults of the "default"
|
||||
// installed locale. Second choice
|
||||
// when above is not available.
|
||||
NS_APP_USER_PROFILES_ROOT_DIR = 'DefProfRt'; // The dir where user profile dirs get created.
|
||||
NS_APP_RES_DIR = 'ARes';
|
||||
NS_APP_CHROME_DIR = 'AChrom';
|
||||
NS_APP_PLUGINS_DIR = 'APlugns'; // Deprecated - use NS_APP_PLUGINS_DIR_LIST
|
||||
NS_APP_SEARCH_DIR = 'SrchPlugns';
|
||||
NS_APP_CHROME_DIR_LIST = 'AChromeDL';
|
||||
NS_APP_PLUGINS_DIR_LIST = 'APluginsDL';
|
||||
NS_SHARED = 'SHARED';
|
||||
NS_APP_PREFS_50_DIR = 'PrefD'; // Directory which contains user prefs
|
||||
NS_APP_PREFS_50_FILE = 'PrefF';
|
||||
NS_APP_PREFS_DEFAULTS_DIR_LIST = 'PrefDL';
|
||||
NS_APP_USER_PROFILE_50_DIR = 'ProfD';
|
||||
NS_APP_USER_CHROME_DIR = 'UChrm';
|
||||
NS_APP_LOCALSTORE_50_FILE = 'LclSt';
|
||||
NS_APP_HISTORY_50_FILE = 'UHist';
|
||||
NS_APP_USER_PANELS_50_FILE = 'UPnls';
|
||||
NS_APP_USER_MIMETYPES_50_FILE = 'UMimTyp';
|
||||
NS_APP_CACHE_PARENT_DIR = 'cachePDir';
|
||||
NS_APP_BOOKMARKS_50_FILE = 'BMarks';
|
||||
NS_APP_DOWNLOADS_50_FILE = 'DLoads';
|
||||
NS_APP_SEARCH_50_FILE = 'SrchF';
|
||||
NS_APP_MAIL_50_DIR = 'MailD';
|
||||
NS_APP_IMAP_MAIL_50_DIR = 'IMapMD';
|
||||
NS_APP_NEWS_50_DIR = 'NewsD';
|
||||
NS_APP_MESSENGER_FOLDER_CACHE_50_DIR = 'MFCaD';
|
||||
NS_APP_INSTALL_CLEANUP_DIR = 'XPIClnupD'; //location of xpicleanup.dat xpicleanup.exe
|
||||
NS_APP_STORAGE_50_FILE = 'UStor';
|
||||
|
||||
procedure NS_CreateInstance(const CID, IID: TGUID; out Intf); overload;
|
||||
procedure NS_CreateInstance(ContractID: PAnsiChar; constref IID: TGUID; out Intf); overload;
|
||||
function NS_GetWeakReference(Instance: nsISupports): nsIWeakReference;
|
||||
procedure NS_GetInterface(Source: nsISupports; constref IID: TGUID; out Instance);
|
||||
procedure NS_GetService(const CID, IID: TGUID; out Intf); overload;
|
||||
procedure NS_GetService(ContractID: PAnsiChar; constref IID: TGUID; out Intf); overload;
|
||||
function NS_GetSpecialDirectory(const specialDirName: PAnsiChar): nsIFile;
|
||||
|
||||
const
|
||||
NS_PREFLOCALIZEDSTRING_CID: TGUID = '{064d9cee-1dd2-11b2-83e3-d25ab0193c26}';
|
||||
NS_PREFLOCALIZEDSTRING_CONTRACTID = '@mozilla.org/pref-localizedstring;1';
|
||||
NS_PREFLOCALIZEDSTRING_CLASSNAME = 'Pref LocalizedString';
|
||||
|
||||
NS_PREFSERVICE_CID: TGUID = '{1cd91b88-1dd2-11b2-92e1-ed22ed298000}';
|
||||
NS_PREFSERVICE_CONTRACTID = '@mozilla.org/preferences-service;1';
|
||||
NS_PREFSERVICE_CLASSNAME = 'Preferences Server';
|
||||
NS_PREFSERVICE_RESET_TOPIC_ID = 'prefservice:before-reset';
|
||||
|
||||
STATUS_UNKNOWN=0;
|
||||
STATUS_ACCEPTED=1;
|
||||
STATUS_DOWNGRADED=2;
|
||||
STATUS_FLAGGED=3;
|
||||
STATUS_REJECTED=4;
|
||||
POLICY_UNKNOWN=0;
|
||||
POLICY_NONE=1;
|
||||
POLICY_NO_CONSENT=2;
|
||||
POLICY_IMPLICIT_CONSENT=3;
|
||||
POLICY_EXPLICIT_CONSENT=4;
|
||||
POLICY_NO_II=5;
|
||||
|
||||
NS_COOKIEPROMPTSERVICE_CONTRACTID = '@mozilla.org/embedcomp/cookieprompt-service;1';
|
||||
|
||||
NS_WINDOWWATCHER_CONTRACTID = '@mozilla.org/embedcomp/window-watcher;1';
|
||||
|
||||
NS_WEBBROWSER_CID: TGUID = '{f1eac761-87e9-11d3-af80-00a024ffc08c}';
|
||||
NS_WEBBROWSER_CONTRACTID = '@mozilla.org/embedding/browser/nsWebBrowser;1';
|
||||
|
||||
STATUS_SCRIPT = $00000001;
|
||||
STATUS_SCRIPT_DEFAULT = $00000002;
|
||||
STATUS_LINK = $00000003;
|
||||
CHROME_DEFAULT = $00000001;
|
||||
CHROME_WINDOW_BORDERS = $00000002;
|
||||
CHROME_WINDOW_CLOSE = $00000004;
|
||||
CHROME_WINDOW_RESIZE = $00000008;
|
||||
CHROME_MENUBAR = $00000010;
|
||||
CHROME_TOOLBAR = $00000020;
|
||||
CHROME_LOCATIONBAR = $00000040;
|
||||
CHROME_STATUSBAR = $00000080;
|
||||
CHROME_PERSONAL_TOOLBAR = $00000100;
|
||||
CHROME_SCROLLBARS = $00000200;
|
||||
CHROME_TITLEBAR = $00000400;
|
||||
CHROME_EXTRA = $00000800;
|
||||
CHROME_WITH_SIZE = $00001000;
|
||||
CHROME_WITH_POSITION = $00002000;
|
||||
CHROME_WINDOW_MIN = $00004000;
|
||||
CHROME_WINDOW_POPUP = $00008000;
|
||||
CHROME_WINDOW_RAISED = $02000000;
|
||||
CHROME_WINDOW_LOWERED = $04000000;
|
||||
CHROME_CENTER_SCREEN = $08000000;
|
||||
CHROME_DEPENDENT = $10000000;
|
||||
CHROME_MODAL = $20000000;
|
||||
CHROME_OPENAS_DIALOG = $40000000;
|
||||
CHROME_OPENAS_CHROME = $80000000;
|
||||
CHROME_ALL = $00000ffe;
|
||||
|
||||
SETUP_ALLOW_PLUGINS = 1;
|
||||
SETUP_ALLOW_JAVASCRIPT = 2;
|
||||
SETUP_ALLOW_META_REDIRECTS = 3;
|
||||
SETUP_ALLOW_SUBFRAMES = 4;
|
||||
SETUP_ALLOW_IMAGES = 5;
|
||||
SETUP_FOCUS_DOC_BEFORE_CONTENT = 6;
|
||||
SETUP_USE_GLOBAL_HISTORY = 256;
|
||||
SETUP_IS_CHROME_WRAPPER = 7;
|
||||
|
||||
PRINTPREVIEW_GOTO_PAGENUM = 0;
|
||||
PRINTPREVIEW_PREV_PAGE = 1;
|
||||
PRINTPREVIEW_NEXT_PAGE = 2;
|
||||
PRINTPREVIEW_HOME = 3;
|
||||
PRINTPREVIEW_END = 4;
|
||||
|
||||
DIM_FLAGS_POSITION = 1;
|
||||
DIM_FLAGS_SIZE_INNER = 2;
|
||||
DIM_FLAGS_SIZE_OUTER = 4;
|
||||
|
||||
CONTEXT_NONE = 0;
|
||||
CONTEXT_LINK = 1;
|
||||
CONTEXT_IMAGE = 2;
|
||||
CONTEXT_DOCUMENT = 4;
|
||||
CONTEXT_TEXT = 8;
|
||||
CONTEXT_INPUT = 16;
|
||||
CONTEXT_BACKGROUND_IMAGE = 32;
|
||||
|
||||
STATE_START = $00000001;
|
||||
STATE_REDIRECTING = $00000002;
|
||||
STATE_TRANSFERRING = $00000004;
|
||||
STATE_NEGOTIATING = $00000008;
|
||||
STATE_STOP = $00000010;
|
||||
STATE_IS_REQUEST = $00010000;
|
||||
STATE_IS_DOCUMENT = $00020000;
|
||||
STATE_IS_NETWORK = $00040000;
|
||||
STATE_IS_WINDOW = $00080000;
|
||||
STATE_IS_INSECURE = $00000004;
|
||||
STATE_IS_BROKEN = $00000001;
|
||||
STATE_IS_SECURE = $00000002;
|
||||
STATE_SECURE_HIGH = $00040000;
|
||||
STATE_SECURE_MED = $00010000;
|
||||
STATE_SECURE_LOW = $00020000;
|
||||
|
||||
NOTIFY_STATE_REQUEST = $00000001;
|
||||
NOTIFY_STATE_DOCUMENT = $00000002;
|
||||
NOTIFY_STATE_NETWORK = $00000004;
|
||||
NOTIFY_STATE_WINDOW = $00000008;
|
||||
NOTIFY_STATE_ALL = $0000000f;
|
||||
NOTIFY_PROGRESS = $00000010;
|
||||
NOTIFY_STATUS = $00000020;
|
||||
NOTIFY_SECURITY = $00000040;
|
||||
NOTIFY_LOCATION = $00000080;
|
||||
NOTIFY_ALL = $000000ff;
|
||||
|
||||
type
|
||||
TWeakReference = class;
|
||||
TSupportsWeakReference = class;
|
||||
|
||||
TWeakReference = class(TInterfacedObject, nsIWeakReference)
|
||||
private
|
||||
FSupports: TSupportsWeakReference;
|
||||
public
|
||||
constructor Create(supports: TSupportsWeakReference);
|
||||
destructor Destroy; override;
|
||||
procedure QueryReferent(constref uuid: TGUID; out Intf); safecall;
|
||||
end;
|
||||
|
||||
TSupportsWeakReference = class(TInterfacedObject, nsISupportsWeakReference)
|
||||
private
|
||||
FProxy: TWeakReference;
|
||||
public
|
||||
destructor Destroy; override;
|
||||
function GetWeakReference: nsIWeakReference; safecall;
|
||||
end;
|
||||
|
||||
{ IDirectoryServiceProvider }
|
||||
|
||||
IDirectoryServiceProvider = class(TInterfacedObject,
|
||||
nsIDirectoryServiceProvider)
|
||||
private
|
||||
FCacheParentDir: UTF8String;
|
||||
FProfileDir: UTF8String;
|
||||
procedure SetCacheDir(const AValue: UTF8String);
|
||||
procedure SetProfileDir(const AValue: UTF8String);
|
||||
public
|
||||
function GetFile(const prop: PAnsiChar; out persistent: PRBool): nsIFile; safecall;
|
||||
property CacheParentDir: UTF8String read FCacheParentDir write SetCacheDir;
|
||||
property ProfileDir: UTF8String read FProfileDir write SetProfileDir;
|
||||
end;
|
||||
|
||||
EGeckoException = class (Exception);
|
||||
EGeckoError = class(EGeckoException); //Gecko error. It is an error.
|
||||
EGeckoHint = class(EGeckoException); //Gecko Hint. It does not necessary means an error. They could be hidden.
|
||||
|
||||
function NS_NewSupportsWeakReferenceDelegate(aTarget: nsISupports): nsISupportsWeakReference;
|
||||
|
||||
resourcestring
|
||||
SGetComponentManagerError = 'Cannot get the Component Manager.';
|
||||
SGetServiceManagerError = 'Cannot get the Service Manager.';
|
||||
SCreateInstanceError = 'Cannot get the instance of CID ''%s.'' ';
|
||||
SGetServiceError = 'Cannot get the service of CID ''%s.'' ';
|
||||
SNoSuchSpecialDir = 'Cannot get the Special Directory ''%s.'' ';
|
||||
SNoSuchInterface = 'Cannot get the Interface ''%s.'' ';
|
||||
|
||||
var
|
||||
GeckoEngineDirectoryService: IDirectoryServiceProvider;
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
nsMemory, nsError, nsInit {$IFDEF MSWINDOWS} ,Windows {$ENDIF};
|
||||
|
||||
var
|
||||
sCompMgr: nsIComponentManager = nil;
|
||||
sSrvMgr: nsIServiceManager = nil;
|
||||
|
||||
|
||||
procedure NS_CreateInstance(const CID, IID: TGUID; out Intf);
|
||||
var
|
||||
rv: nsresult;
|
||||
begin
|
||||
rv := NS_OK;
|
||||
if not Assigned(sCompMgr) then
|
||||
rv := NS_GetComponentManager(sCompMgr);
|
||||
if NS_FAILED(rv) or not Assigned(sCompMgr) then
|
||||
raise EGeckoError.CreateRes(PResStringRec(@SGetComponentManagerError));
|
||||
|
||||
try
|
||||
sCompMgr.CreateInstance(CID, nil, IID, Intf);
|
||||
except
|
||||
raise EGeckoError.CreateResFmt(PResStringRec(@SCreateInstanceError), [GUIDToString(CID)]);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure NS_CreateInstance(ContractID: PAnsiChar; constref IID: TGUID; out Intf);
|
||||
var
|
||||
rv: nsresult;
|
||||
begin
|
||||
rv := NS_OK;
|
||||
if not Assigned(sCompMgr) then
|
||||
rv := NS_GetComponentManager(sCompMgr);
|
||||
if NS_FAILED(rv) or not Assigned(sCompMgr) then
|
||||
raise EGeckoError.CreateRes(PResStringRec(@SGetComponentManagerError));
|
||||
|
||||
try
|
||||
sCompMgr.CreateInstanceByContractID(ContractID, nil, IID, Intf);
|
||||
except
|
||||
raise EGeckoError.CreateResFmt(PResStringRec(@SCreateInstanceError), [String(ContractID)]);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure NS_GetService(const CID, IID: TGUID; out Intf);
|
||||
var
|
||||
rv: nsresult;
|
||||
begin
|
||||
rv := NS_OK;
|
||||
if not Assigned(sSrvMgr) then
|
||||
rv := NS_GetServiceManager(sSrvMgr);
|
||||
if NS_FAILED(rv) or not Assigned(sSrvMgr) then
|
||||
raise EGeckoError.CreateRes(PResStringRec(@SGetServiceManagerError));
|
||||
|
||||
try
|
||||
sSrvMgr.GetService(CID, IID, Intf);
|
||||
except
|
||||
raise EGeckoError.CreateResFmt(PResStringRec(@SGetServiceError), [GUIDToString(CID)]);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure NS_GetService(ContractID: PAnsiChar; constref IID: TGUID; out Intf);
|
||||
var
|
||||
rv: nsresult;
|
||||
begin
|
||||
rv := NS_OK;
|
||||
if not Assigned(sSrvMgr) then
|
||||
rv := NS_GetServiceManager(sSrvMgr);
|
||||
if NS_FAILED(rv) or not Assigned(sSrvMgr) then
|
||||
raise EGeckoError.CreateRes(PResStringRec(@SGetServiceManagerError));
|
||||
|
||||
try
|
||||
sSrvMgr.GetServiceByContractID(ContractID, IID, Intf);
|
||||
except
|
||||
raise EGeckoError.CreateResFmt(PResStringRec(@SGetServiceError), [ContractID]);
|
||||
end;
|
||||
end;
|
||||
|
||||
function NS_GetSpecialDirectory(const specialDirName: PAnsiChar): nsIFile;
|
||||
var
|
||||
serv: nsIProperties;
|
||||
const
|
||||
NS_DIRECTORY_SERVICE_CID: TGUID = '{f00152d0-b40b-11d3-8c9c-000064657374}';
|
||||
begin
|
||||
NS_GetService(NS_DIRECTORY_SERVICE_CID, nsIProperties, serv);
|
||||
|
||||
try
|
||||
serv.Get(specialDirName, nsIFile, Result);
|
||||
except
|
||||
raise EGeckoError.CreateResFmt(PResStringRec(@SNoSuchSpecialDir), [specialDirName]);
|
||||
end;
|
||||
end;
|
||||
|
||||
constructor TWeakReference.Create(supports: TSupportsWeakReference);
|
||||
begin
|
||||
inherited Create;
|
||||
FSupports := supports;
|
||||
end;
|
||||
|
||||
destructor TWeakReference.Destroy;
|
||||
begin
|
||||
if Assigned(FSupports) then
|
||||
FSupports.FProxy := nil;
|
||||
inherited;
|
||||
end;
|
||||
|
||||
procedure TWeakReference.QueryReferent(constref uuid: TGUID; out Intf);
|
||||
var
|
||||
rv: nsresult;
|
||||
begin
|
||||
rv := FSupports.QueryInterface(uuid, Intf);
|
||||
if NS_FAILED(rv) then begin
|
||||
//This is not a catastrophic error, so no exception is needed.
|
||||
//In example the uuid {DDE39DE0-E4E0-11DA-8AD9-0800200C9A66} request
|
||||
//for a nsIWebProgressListener2. Just answering nothing does not
|
||||
//produce an "error".
|
||||
{$IFDEF DEBUG}
|
||||
OutputDebugString('Missing interface in TWeakReference.QueryReferent '+GUIDToString(uuid));
|
||||
{$ENDIF}
|
||||
//raise EGeckoError.Create('QueryReference Error');
|
||||
//System.Error(reIntfCastError);
|
||||
end;
|
||||
end;
|
||||
|
||||
destructor TSupportsWeakReference.Destroy;
|
||||
begin
|
||||
if Assigned(FProxy) then
|
||||
FProxy.FSupports := nil;
|
||||
inherited;
|
||||
end;
|
||||
|
||||
function TSupportsWeakReference.GetWeakReference: nsIWeakReference;
|
||||
begin
|
||||
if not Assigned(FProxy) then
|
||||
FProxy := TWeakReference.Create(Self);
|
||||
|
||||
if NS_FAILED(FProxy.QueryInterface(nsIWeakReference, Result)) then
|
||||
System.Error(reIntfCastError);
|
||||
end;
|
||||
|
||||
function NS_GetWeakReference(Instance: nsISupports): nsIWeakReference;
|
||||
var
|
||||
factory: nsISupportsWeakReference;
|
||||
begin
|
||||
if Assigned(Instance) then
|
||||
try
|
||||
factory := Instance as nsISupportsWeakReference;
|
||||
Result := factory.GetWeakReference();
|
||||
except
|
||||
Result := nil;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure NS_GetInterface(Source: nsISupports; constref IID: TGUID; out Instance);
|
||||
var
|
||||
factory: nsIInterfaceRequestor;
|
||||
begin
|
||||
if Assigned(Source) then
|
||||
try
|
||||
factory := Source as nsIInterfaceRequestor;
|
||||
factory.GetInterface(IID, Instance);
|
||||
except
|
||||
raise EGeckoError.CreateResFmt(PResStringRec(@SNoSuchInterface), [GUIDToString(IID)]);
|
||||
end else
|
||||
System.Error(reInvalidPtr);
|
||||
end;
|
||||
|
||||
type
|
||||
TSupportsWeakReferenceInternal = class;
|
||||
TWeakReferenceInternal = class;
|
||||
|
||||
TSupportsWeakReferenceInternal = class(TInterfacedObject,
|
||||
nsISupportsWeakReference)
|
||||
FTarget: nsISupports;
|
||||
FProxy: TWeakReferenceInternal;
|
||||
constructor Create(ATarget: nsISupports);
|
||||
destructor Destroy; override;
|
||||
function getWeakReference: nsIWeakReference; safecall;
|
||||
end;
|
||||
|
||||
TWeakReferenceInternal = class(TInterfacedObject,
|
||||
nsIWeakReference)
|
||||
FReferent: TSupportsWeakReferenceInternal;
|
||||
constructor Create(aReferent: TSupportsWeakReferenceInternal);
|
||||
destructor Destroy; override;
|
||||
procedure QueryReferent(constref iid: TGUID; out Intf); safecall;
|
||||
end;
|
||||
|
||||
function NS_NewSupportsWeakReferenceDelegate(aTarget: nsISupports): nsISupportsWeakReference;
|
||||
begin
|
||||
Result := TSupportsWeakReferenceInternal.Create(aTarget);
|
||||
end;
|
||||
|
||||
constructor TSupportsWeakReferenceInternal.Create(ATarget: nsISupports);
|
||||
begin
|
||||
inherited Create;
|
||||
FTarget := ATarget;
|
||||
// FProxy := nil; // non-initialized value set to zero
|
||||
end;
|
||||
|
||||
destructor TSupportsWeakReferenceInternal.Destroy;
|
||||
begin
|
||||
if Assigned(FProxy) then
|
||||
FProxy.FReferent := nil;
|
||||
inherited;
|
||||
end;
|
||||
|
||||
function TSupportsWeakReferenceInternal.getWeakReference: nsIWeakReference;
|
||||
begin
|
||||
if not Assigned(FProxy) then
|
||||
begin
|
||||
FProxy := TWeakReferenceInternal.Create(Self);
|
||||
end;
|
||||
|
||||
Result := FProxy;
|
||||
end;
|
||||
|
||||
constructor TWeakReferenceInternal.Create(aReferent: TSupportsWeakReferenceInternal);
|
||||
begin
|
||||
inherited Create;
|
||||
|
||||
FReferent := aReferent;
|
||||
end;
|
||||
|
||||
destructor TWeakReferenceInternal.Destroy;
|
||||
begin
|
||||
if Assigned(FReferent) then
|
||||
FReferent.FProxy := nil;
|
||||
|
||||
inherited;
|
||||
end;
|
||||
|
||||
procedure TWeakReferenceInternal.QueryReferent(constref iid: TGUID; out intf);
|
||||
begin
|
||||
if not Supports(FReferent.FTarget, iid, intf) then
|
||||
System.Error(reIntfCastError);
|
||||
end;
|
||||
|
||||
{ IDirectoryServiceProvider }
|
||||
|
||||
procedure IDirectoryServiceProvider.SetCacheDir(const AValue: UTF8String);
|
||||
begin
|
||||
if FCacheParentDir=AValue then exit;
|
||||
FCacheParentDir:=AValue;
|
||||
end;
|
||||
|
||||
procedure IDirectoryServiceProvider.SetProfileDir(const AValue: UTF8String);
|
||||
begin
|
||||
if FProfileDir=AValue then exit;
|
||||
FProfileDir:=AValue;
|
||||
end;
|
||||
|
||||
function IDirectoryServiceProvider.GetFile(const prop: PAnsiChar; out
|
||||
persistent: PRBool): nsIFile; safecall;
|
||||
var
|
||||
Local: nsILocalFile;
|
||||
begin
|
||||
persistent:=true; //Only ask one time for each directory, it will be remembered
|
||||
//by the Gecko engine while running.
|
||||
if prop = 'ProfD' then //Profile directory
|
||||
begin
|
||||
if FProfileDir<>'' then
|
||||
begin
|
||||
NS_NewLocalFile(NewString(FProfileDir).AString,false,Local);
|
||||
Local.QueryInterface(nsILocalFile,Result);
|
||||
end;
|
||||
end else
|
||||
if prop = 'cachePDir' then //Cache directory
|
||||
begin
|
||||
if FCacheParentDir<>'' then
|
||||
begin
|
||||
NS_NewLocalFile(NewString(FCacheParentDir).AString,false,Local);
|
||||
Local.QueryInterface(nsILocalFile,Result);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
end.
|
563
components/geckoport/version2/nsXRE.pas
Executable file
563
components/geckoport/version2/nsXRE.pas
Executable file
@ -0,0 +1,563 @@
|
||||
unit nsXRE;
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, nsTypes, nsXPCOM, nsInit;
|
||||
|
||||
type
|
||||
PXREAppData = ^nsXREAppData;
|
||||
nsXREAppData = record
|
||||
size: PRUint32;
|
||||
directory: nsILocalFile;
|
||||
vendor: PAnsiChar;
|
||||
name: PAnsiChar;
|
||||
version: PAnsiChar;
|
||||
buildID: PAnsiChar;
|
||||
ID: PAnsiChar;
|
||||
copyright: PAnsiChar;
|
||||
flags: PRUint32;
|
||||
xreDirectory: nsILocalFile;
|
||||
minVersion: PAnsiChar;
|
||||
maxVersion: PAnsiChar;
|
||||
crashReportURL: PAnsiChar;
|
||||
profile: PAnsiChar;
|
||||
end;
|
||||
|
||||
const
|
||||
NS_XRE_ENABLE_PROFILE_MIGRATOR = 1 shl 1;
|
||||
NS_XRE_ENABLE_EXTENSION_MANEGER = 1 shl 2;
|
||||
NS_XRE_ENABLE_CRASH_REPORTER = 1 shl 3;
|
||||
|
||||
XRE_USER_APP_DATA_DIR = 'UAppData';
|
||||
XRE_EXTENSIONS_DIR_LIST = 'XREExtDL';
|
||||
XRE_EXECUTABLE_FILE = 'XREExeF';
|
||||
NS_APP_PROFILE_DIR_STARTUP = 'ProfDS';
|
||||
NS_APP_PROFILE_LOCAL_DIR_STARTUP = 'ProfLDS';
|
||||
XRE_SYS_LOCAL_EXTENSION_PARENT_DIR = 'XRESysLExtPD';
|
||||
XRE_SYS_SHARE_EXTENSION_PARENT_DIR = 'XRESysSExtPD';
|
||||
XRE_USER_SYS_EXTENSION_DIR = 'XREUSysExt';
|
||||
|
||||
{$IFNDEF MSWINDOWS}
|
||||
MAX_PATH = 260;
|
||||
{$ENDIF}
|
||||
|
||||
// XRE Functions
|
||||
function XRE_FindGRE(const lowerVer: PAnsiChar;
|
||||
lowerInclusive: PRBool;
|
||||
const upperVer: PAnsiChar;
|
||||
upperInclusive: PRBool;
|
||||
GREPath: PAnsiChar;
|
||||
GREPathLen: PRUint32): nsresult;
|
||||
function XRE_LoadGRE(GREPath: PAnsiChar): nsresult;
|
||||
function XRE_UnloadGRE(): nsresult;
|
||||
function XRE_FindAndLoadGRE(const lowerVer: PAnsiChar;
|
||||
lowerInclusive: PRBool;
|
||||
const upperVer: PAnsiChar;
|
||||
upperInclusive: PRBool;
|
||||
XPComPath: string = ''): nsresult;
|
||||
function XRE_GetLoadedGREPath(GREPath: PAnsiChar;
|
||||
GREPathLen: Cardinal): nsresult;
|
||||
|
||||
function XRE_Startup(const lowerVer: PAnsiChar;
|
||||
lowerInclusive: PRBool;
|
||||
const upperVer: PAnsiChar;
|
||||
upperInclusive: PRBool;
|
||||
XPComPath: string = ''): nsresult;
|
||||
function XRE_Shutdown(): nsresult;
|
||||
|
||||
function XRE_main(argc: integer;
|
||||
argv: Pointer;
|
||||
const sAppData: nsXREAppData): Integer; cdecl;
|
||||
|
||||
function XRE_GetFileFromPath(aPath: PAnsiChar;
|
||||
out aResult: nsILocalFile): nsresult; cdecl;
|
||||
function XRE_GetBinaryPath(argv0: PAnsiChar;
|
||||
out aResult: nsILocalFile): nsresult; cdecl;
|
||||
procedure XRE_GetStaticComponents(out aStaticComponents: PStaticModuleInfoArray;
|
||||
out aComponentCount: PRUint32); cdecl;
|
||||
function XRE_LockProfileDirectory(aDirectory: nsILocalFile;
|
||||
out aLockObject: nsISupports): nsresult; cdecl;
|
||||
function XRE_InitEmbedding(aLibXulDirectory: nsILocalFile;
|
||||
aAppDirectory: nsILocalFile;
|
||||
aAppDirProvider: nsIDirectoryServiceProvider;
|
||||
const aStaticComponents: PStaticModuleInfoArray;
|
||||
aStaticComponentCount: PRUint32): nsresult;
|
||||
procedure XRE_NotifyProfile(); cdecl;
|
||||
procedure XRE_TermEmbedding(); cdecl;
|
||||
function XRE_CreateAppData(aINIFile: nsILocalFile;
|
||||
out aAppData: PXREAppData): nsresult; cdecl;
|
||||
function XRE_ParseAppData(aINIFile: nsILocalFile;
|
||||
out aAppData: nsXREAppData): nsresult; cdecl;
|
||||
procedure XRE_FreeAppData(aAppData: PXREAppData); cdecl;
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
nsError, nsGeckoStrings,
|
||||
{$IFDEF MSWINDOWS} Windows, {$ELSE} DynLibs, {$ENDIF} SysUtils;
|
||||
|
||||
var
|
||||
mainFunc :
|
||||
function (argc: integer;
|
||||
argv: Pointer;
|
||||
const sAppData: nsXREAppData): Integer; cdecl;
|
||||
getFileFromPathFunc :
|
||||
function (aPath: PAnsiChar;
|
||||
out aResult: nsILocalFile): nsresult; cdecl;
|
||||
getBinaryPathFunc :
|
||||
function (argv0: PAnsiChar;
|
||||
out aResult: nsILocalFile): nsresult; cdecl;
|
||||
getStaticComponentsFunc :
|
||||
procedure (out aStaticComponents: PStaticModuleInfoArray;
|
||||
out aComponentCount: PRUint32); cdecl;
|
||||
lockProfileDirectoryFunc :
|
||||
function (aDirectory: nsILocalFile;
|
||||
out aLockObject: nsISupports): nsresult; cdecl;
|
||||
initEmbeddingFunc :
|
||||
function (aLibXulDirectory: nsILocalFile;
|
||||
aAppDirectory: nsILocalFile;
|
||||
aAppDirProvider: nsIDirectoryServiceProvider;
|
||||
const aStaticComponents: PStaticModuleInfoArray;
|
||||
aStaticComponentCount: PRUint32): nsresult; cdecl;
|
||||
{$IFDEF XULRUNNER2}
|
||||
initEmbedding2Func :
|
||||
function (aLibXulDirectory: nsILocalFile;
|
||||
aAppDirectory: nsILocalFile;
|
||||
aAppDirProvider: nsIDirectoryServiceProvider): nsresult; cdecl;
|
||||
{$ENDIF}
|
||||
notifyProfileFunc : procedure (); cdecl;
|
||||
termEmbeddingFunc : procedure (); cdecl;
|
||||
createAppDataFunc :
|
||||
function (aINIFile: nsILocalFile;
|
||||
out aAppData: PXREAppData): nsresult; cdecl;
|
||||
parseAppDataFunc :
|
||||
function (aINIFile: nsILocalFile;
|
||||
out aAppData: nsXREAppData): nsresult; cdecl;
|
||||
freeAppDataFunc :
|
||||
procedure (aAppData: PXREAppData); cdecl;
|
||||
|
||||
function strrpbrk(src: PAnsiChar; const charSet: PAnsiChar): PAnsiChar;
|
||||
var
|
||||
ptr: PAnsiChar;
|
||||
begin
|
||||
Result := nil;
|
||||
while src^ <> #0 do
|
||||
begin
|
||||
ptr := charSet;
|
||||
while ptr^ <> #0 do
|
||||
begin
|
||||
if ptr^ = src^ then
|
||||
Result := src;
|
||||
Inc(ptr);
|
||||
end;
|
||||
Inc(src);
|
||||
end;
|
||||
end;
|
||||
|
||||
function XRE_FindGRE(const lowerVer: PAnsiChar;
|
||||
lowerInclusive: PRBool;
|
||||
const upperVer: PAnsiChar;
|
||||
upperInclusive: PRBool;
|
||||
GREPath: PAnsiChar;
|
||||
GREPathLen: PRUint32): nsresult;
|
||||
const
|
||||
{$IFDEF MSWINDOWS}
|
||||
libxul = 'xul.dll';
|
||||
{$ELSE}
|
||||
libxul = 'XUL';
|
||||
{$ENDIF}
|
||||
var
|
||||
vers: TGREVersionRange;
|
||||
xpcomPath: array[0..MAX_PATH] of AnsiChar;
|
||||
lastSlash: PAnsiChar;
|
||||
MOZILLAFIVEHOME: string;
|
||||
{$IFDEF LINUX}
|
||||
EachPath: string;
|
||||
LDPATH: string;
|
||||
LDPATHItems: TStringList;
|
||||
j: integer;
|
||||
{$ENDIF}
|
||||
begin
|
||||
{$IFDEF MSWINDOWS}
|
||||
vers.lower := lowerVer;
|
||||
vers.lowerInclusive := lowerInclusive;
|
||||
vers.upper := upperVer;
|
||||
vers.upperInclusive := upperInclusive;
|
||||
|
||||
(*
|
||||
Result := GRE_GetGREPathWithProperties(@vers, 1, nil, 0, xpcomPath, MAX_PATH);
|
||||
//FPC port: previous call doesn't find Firefox's GRE, so just force it.
|
||||
if NS_FAILED(result) then
|
||||
begin
|
||||
// NS_StrLCopy(xpcomPath, 'C:\Program Files\Mozilla Firefox\xpcom.dll', MAX_PATH);
|
||||
NS_StrLCopy(xpcomPath, PChar(ExtractFilePath(ParamStr(0)) + 'xulrunner\xpcom.dll'), MAX_PATH);
|
||||
if FileExists(xpcomPath) then
|
||||
Result := NS_OK;
|
||||
end;
|
||||
//FPC port
|
||||
if NS_FAILED(result) then
|
||||
Exit;
|
||||
*)
|
||||
//Changed checking order. Preference is xulrunner in application folder
|
||||
MOZILLAFIVEHOME:=GetEnvironmentVariable('MOZILLA_FIVE_HOME');
|
||||
if MOZILLAFIVEHOME<>'' then begin
|
||||
if MOZILLAFIVEHOME[Length(MOZILLAFIVEHOME)]<>PathDelim then MOZILLAFIVEHOME:=MOZILLAFIVEHOME+PathDelim;
|
||||
NS_StrLCopy(xpcomPath, PChar(MOZILLAFIVEHOME+'xpcom.dll'), MAX_PATH);
|
||||
Result:=NS_OK;
|
||||
end else begin
|
||||
NS_StrLCopy(xpcomPath, PChar(ExtractFilePath(ParamStr(0)) + 'xpcom.dll'), MAX_PATH);
|
||||
if FileExists(xpcomPath) then begin
|
||||
Result := NS_OK;
|
||||
end else begin
|
||||
NS_StrLCopy(xpcomPath, PChar(ExtractFilePath(ParamStr(0)) + 'xulrunner\xpcom.dll'), MAX_PATH);
|
||||
if FileExists(xpcomPath) then begin
|
||||
Result := NS_OK;
|
||||
end else begin
|
||||
Result := GRE_GetGREPathWithProperties(@vers, 1, nil, 0, xpcomPath, MAX_PATH);
|
||||
if not FileExists(xpcomPath) then begin
|
||||
Result:=NS_ERROR_FILE_ACCESS_DENIED
|
||||
end else begin
|
||||
result:=NS_OK;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
if NS_FAILED(result) then
|
||||
Exit;
|
||||
|
||||
lastSlash := strrpbrk(xpcomPath, '/\');
|
||||
if not Assigned(lastSlash) then
|
||||
begin
|
||||
Result := NS_ERROR_FILE_INVALID_PATH;
|
||||
Exit;
|
||||
end;
|
||||
|
||||
NS_StrLCopy(GREPath, xpcomPath, GREPathLen);
|
||||
|
||||
Exit;
|
||||
{$ELSE}
|
||||
{$IFDEF DARWIN}
|
||||
// NS_StrLCopy(GREPath, '/Applications/Firefox.app/Contents/MacOS/libxpcom.dylib', GREPathLen);
|
||||
NS_StrLCopy(GREPath, '/Library/Frameworks/XUL.framework/Versions/Current/libxpcom.dylib', GREPathLen);
|
||||
{$ELSE} //Linux
|
||||
//NS_StrLCopy(GREPath, '/home/user/xulrunner/libxpcom.so', GREPathLen);
|
||||
Result:=NS_ERROR_NOT_AVAILABLE;
|
||||
LDPATH:=GetEnvironmentVariable('LD_LIBRARY_PATH');
|
||||
LDPATHItems:=TStringList.Create;
|
||||
LDPATHItems.StrictDelimiter:=true;
|
||||
LDPATHItems.Delimiter:=PathSeparator;
|
||||
LDPATHItems.DelimitedText:=LDPATH;
|
||||
for j := 0 to LDPATHItems.Count-1 do begin
|
||||
EachPath:=LDPATHItems[j];
|
||||
if Length(EachPath)>0 then begin
|
||||
if EachPath[Length(EachPath)]<>PathDelim then EachPath:=EachPath+PathDelim;
|
||||
if FileExists(EachPath+'libxpcom.so') and FileExists(EachPath+'dependentlibs.list') then begin
|
||||
NS_StrLCopy(GREPath, pchar(EachPath+'libxpcom.so'), GREPathLen);
|
||||
Result:=NS_OK;
|
||||
break;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
LDPATHItems.Free;
|
||||
{$ENDIF}
|
||||
Result := NS_OK;
|
||||
{$ENDIF}
|
||||
end;
|
||||
|
||||
var
|
||||
sXulModule: HMODULE;
|
||||
sLoadedGREPath: array[0..MAX_PATH] of AnsiChar;
|
||||
|
||||
function XRE_LoadGRE(GREPath: PAnsiChar): nsresult;
|
||||
const
|
||||
{$IFDEF MSWINDOWS}
|
||||
libxul = 'xul.dll';
|
||||
{$ELSE}
|
||||
{$IFDEF DARWIN}
|
||||
libxul = 'XUL';
|
||||
{$ELSE} //Linux
|
||||
libxul = 'libxul.so';
|
||||
{$ENDIF}
|
||||
{$ENDIF}
|
||||
var
|
||||
xpcomPath, xulPath: array[0..MAX_PATH] of AnsiChar;
|
||||
xulModule: HMODULE;
|
||||
lastSlash: PAnsiChar;
|
||||
begin
|
||||
if sXulModule <> 0 then
|
||||
begin
|
||||
Result := NS_ERROR_ALREADY_INITIALIZED;
|
||||
Exit;
|
||||
end;
|
||||
|
||||
NS_StrLCopy(xpcomPath, GREPath, MAX_PATH);
|
||||
lastSlash := strrpbrk(xpcomPath, '/\');
|
||||
if not Assigned(lastSlash) then
|
||||
begin
|
||||
Result := NS_ERROR_FILE_INVALID_PATH;
|
||||
Exit;
|
||||
end;
|
||||
lastSlash^ := #0;
|
||||
NS_StrLCopy(xulPath, xpcomPath, MAX_PATH);
|
||||
NS_StrLCat(xulPath, DirectorySeparator + libxul, MAX_PATH);
|
||||
|
||||
Result := XPCOMGlueStartup(GREPath);
|
||||
if NS_FAILED(Result) then
|
||||
Exit;
|
||||
|
||||
{$IFDEF MSWINDOWS}
|
||||
xulModule := LoadLibraryExA(xulPath, 0, 0);
|
||||
{$ELSE}
|
||||
xulModule := LoadLibrary(xulPath);
|
||||
{$ENDIF}
|
||||
if xulModule = 0 then
|
||||
begin
|
||||
Result := NS_ERROR_FAILURE;
|
||||
XPCOMGlueShutdown();
|
||||
Exit;
|
||||
end;
|
||||
|
||||
mainFunc := GetProcAddress(xulModule, 'XRE_main');
|
||||
getFileFromPathFunc := GetProcAddress(xulModule, 'XRE_GetFileFromPath');
|
||||
getBinaryPathFunc := GetProcAddress(xulModule, 'XRE_GetBinaryPath');
|
||||
getStaticComponentsFunc := GetProcAddress(xulModule, 'XRE_GetStaticComponents');
|
||||
lockProfileDirectoryFunc := GetProcAddress(xulModule, 'XRE_LockProfileDirectory');
|
||||
initEmbeddingFunc := GetProcAddress(xulModule, 'XRE_InitEmbedding');
|
||||
{$IFDEF XULRUNNER2}
|
||||
initEmbedding2Func := GetProcAddress(xulModule, 'XRE_InitEmbedding2');
|
||||
{$ENDIF}
|
||||
notifyProfileFunc := GetProcAddress(xulModule, 'XRE_NotifyProfile');
|
||||
termEmbeddingFunc := GetProcAddress(xulModule, 'XRE_TermEmbedding');
|
||||
createAppDataFunc := GetProcAddress(xulModule, 'XRE_CreateAppData');
|
||||
parseAppDataFunc := GetProcAddress(xulModule, 'XRE_ParseAppData');
|
||||
freeAppDataFunc := GetProcAddress(xulModule, 'XRE_FreeAppData');
|
||||
|
||||
NS_StrLCopy(sLoadedGREPath, GREPath, MAX_PATH);
|
||||
sXulModule := xulModule;
|
||||
end;
|
||||
|
||||
function XRE_UnloadGRE(): nsresult;
|
||||
begin
|
||||
if sXulModule = 0 then
|
||||
begin
|
||||
Result := NS_ERROR_NOT_INITIALIZED;
|
||||
Exit;
|
||||
end;
|
||||
XPCOMGlueShutdown;
|
||||
sXulModule := 0;
|
||||
Result := NS_OK;
|
||||
end;
|
||||
|
||||
function XRE_FindAndLoadGRE(const lowerVer: PAnsiChar;
|
||||
lowerInclusive: PRBool;
|
||||
const upperVer: PAnsiChar;
|
||||
upperInclusive: PRBool;
|
||||
XPComPath: string = ''): nsresult;
|
||||
var
|
||||
grePath: array[0..MAX_PATH] of AnsiChar;
|
||||
begin
|
||||
if XPComPath='' then
|
||||
begin
|
||||
Result := XRE_FindGRE(lowerVer, lowerInclusive,
|
||||
upperVer, upperInclusive,
|
||||
grePath, MAX_PATH);
|
||||
if NS_FAILED(Result) then
|
||||
Exit;
|
||||
end
|
||||
else if FileExists(XPComPath) then
|
||||
begin
|
||||
NS_StrLCopy(GREPath, pchar(XPComPath), length(XPComPath));
|
||||
end
|
||||
else
|
||||
begin
|
||||
result := NS_ERROR_FILE_ACCESS_DENIED;
|
||||
Exit;
|
||||
end;
|
||||
|
||||
Result := XRE_LoadGRE(grePath);
|
||||
end;
|
||||
|
||||
function XRE_GetLoadedGREPath(GREPath: PAnsiChar;
|
||||
GREPathLen: Cardinal): nsresult;
|
||||
begin
|
||||
if sXulModule = 0 then
|
||||
begin
|
||||
Result := NS_ERROR_NOT_INITIALIZED;
|
||||
Exit;
|
||||
end;
|
||||
NS_StrLCopy(GREPath, sLoadedGREPath, GREPathLen);
|
||||
Result := NS_OK;
|
||||
end;
|
||||
|
||||
function XRE_Startup(const lowerVer: PAnsiChar;
|
||||
lowerInclusive: PRBool;
|
||||
const upperVer: PAnsiChar;
|
||||
upperInclusive: PRBool;
|
||||
XPComPath: string = ''): nsresult;
|
||||
var
|
||||
grePath: array[0..MAX_PATH] of AnsiChar;
|
||||
xulDir: nsILocalFile;
|
||||
lastSlash: PAnsiChar;
|
||||
|
||||
appPath: array[0..MAX_PATH] of AnsiChar;
|
||||
appDir: nsILocalFile;
|
||||
begin
|
||||
Result := XRE_FindAndLoadGRE(lowerVer, lowerInclusive,
|
||||
upperVer, upperInclusive,
|
||||
XPComPath);
|
||||
if NS_FAILED(Result) then
|
||||
Exit;
|
||||
|
||||
XRE_GetLoadedGREPath(grePath, MAX_PATH);
|
||||
lastSlash := strrpbrk(grePath, '/\');
|
||||
lastSlash^ := #0;
|
||||
{$IFNDEF FPC}
|
||||
Result := NS_NewNativeLocalFile(NewCString(grePath).ACString, False, xulDir);
|
||||
{$ELSE}
|
||||
Result := NS_NewNativeLocalFile(NewCString(AnsiString(grePath)).ACString, False, xulDir);
|
||||
{$ENDIF}
|
||||
if NS_FAILED(Result) then
|
||||
begin
|
||||
XRE_UnloadGRE();
|
||||
Exit;
|
||||
end;
|
||||
{$IFDEF MSWINDOWS}
|
||||
if not NS_CurrentProcessDirectory(appPath, MAX_PATH) then
|
||||
begin
|
||||
Result := NS_ERROR_FAILURE;
|
||||
XRE_UnloadGRE();
|
||||
Exit;
|
||||
end;
|
||||
{$ELSE}
|
||||
// NS_StrCopy(appPath, PAnsiChar(ExtractFilePath(ParamStr(0))));
|
||||
NS_StrCopy(appPath, PAnsiChar(ExtractFilePath(ExpandFileName(ParamStr(0)))));
|
||||
{$ENDIF}
|
||||
{$IFNDEF FPC}
|
||||
Result := NS_NewNativeLocalFile(NewCString(appPath).ACString, False, appDir);
|
||||
{$ELSE}
|
||||
Result := NS_NewNativeLocalFile(NewCString(AnsiString(appPath)).ACString, False, appDir);
|
||||
{$ENDIF}
|
||||
if NS_FAILED(Result) then
|
||||
begin
|
||||
XRE_UnloadGRE();
|
||||
Exit;
|
||||
end;
|
||||
// NS_LogInit();
|
||||
//Warning, do not pass GeckoEngineDirectoryService to XRE_InitEmbedding, it
|
||||
//will crash Gecko versions prior to 1.9.2.x with AV in line "basewin.Create"
|
||||
Result := XRE_InitEmbedding(xulDir, appDir, nil, nil, 0);
|
||||
// NS_LogTerm();
|
||||
end;
|
||||
|
||||
function XRE_Shutdown(): nsresult;
|
||||
begin
|
||||
XRE_TermEmbedding();
|
||||
XRE_UnloadGRE();
|
||||
Result := NS_OK;
|
||||
end;
|
||||
|
||||
function XRE_main(argc: integer;
|
||||
argv: Pointer;
|
||||
const sAppData: nsXREAppData): Integer;
|
||||
begin
|
||||
if Assigned(mainFunc) then
|
||||
Result := mainFunc(argc, argv, sAppData)
|
||||
else
|
||||
Result := 0;
|
||||
end;
|
||||
|
||||
function XRE_GetFileFromPath(aPath: PAnsiChar;
|
||||
out aResult: nsILocalFile): nsresult;
|
||||
begin
|
||||
if Assigned(getFileFromPathFunc) then
|
||||
Result := getFileFromPathFunc(aPath, aResult)
|
||||
else
|
||||
Result := NS_ERROR_NOT_IMPLEMENTED;
|
||||
end;
|
||||
|
||||
function XRE_GetBinaryPath(argv0: PAnsiChar;
|
||||
out aResult: nsILocalFile): nsresult;
|
||||
begin
|
||||
if Assigned(getBinaryPathFunc) then
|
||||
Result := getBinaryPathFunc(argv0, aResult)
|
||||
else
|
||||
Result := NS_ERROR_NOT_IMPLEMENTED;
|
||||
end;
|
||||
|
||||
procedure XRE_GetStaticComponents(out aStaticComponents: PStaticModuleInfoArray;
|
||||
out aComponentCount: PRUint32);
|
||||
begin
|
||||
if Assigned(getStaticComponentsFunc) then
|
||||
getStaticComponentsFunc(aStaticComponents, aComponentCount);
|
||||
end;
|
||||
|
||||
function XRE_LockProfileDirectory(aDirectory: nsILocalFile;
|
||||
out aLockObject: nsISupports): nsresult;
|
||||
begin
|
||||
if Assigned(lockProfileDirectoryFunc) then
|
||||
Result := lockProfileDirectoryFunc(aDirectory, aLockObject)
|
||||
else
|
||||
Result := NS_ERROR_NOT_IMPLEMENTED;
|
||||
end;
|
||||
|
||||
function XRE_InitEmbedding(aLibXulDirectory: nsILocalFile;
|
||||
aAppDirectory: nsILocalFile;
|
||||
aAppDirProvider: nsIDirectoryServiceProvider;
|
||||
const aStaticComponents: PStaticModuleInfoArray;
|
||||
aStaticComponentCount: PRUint32): nsresult;
|
||||
begin
|
||||
if Assigned(initEmbeddingFunc) then
|
||||
Result := initEmbeddingFunc(aLibXulDirectory,
|
||||
aAppDirectory,
|
||||
aAppDirProvider,
|
||||
aStaticComponents,
|
||||
aStaticComponentCount)
|
||||
else
|
||||
{$IFDEF XULRUNNER2}
|
||||
if Assigned(initEmbedding2Func) then
|
||||
Result := initEmbedding2Func(aLibXulDirectory,
|
||||
aAppDirectory,
|
||||
aAppDirProvider)
|
||||
else
|
||||
{$ENDIF}
|
||||
Result := NS_ERROR_NOT_IMPLEMENTED;
|
||||
end;
|
||||
|
||||
procedure XRE_NotifyProfile();
|
||||
begin
|
||||
if Assigned(notifyProfileFunc) then
|
||||
notifyProfileFunc();
|
||||
end;
|
||||
|
||||
procedure XRE_TermEmbedding();
|
||||
begin
|
||||
if Assigned(termEmbeddingFunc) then
|
||||
termEmbeddingFunc();
|
||||
end;
|
||||
|
||||
function XRE_CreateAppData(aINIFile: nsILocalFile;
|
||||
out aAppData: PXREAppData): nsresult;
|
||||
begin
|
||||
if Assigned(createAppDataFunc) then
|
||||
Result := createAppDataFunc(aINIFile, aAppData)
|
||||
else
|
||||
Result := NS_ERROR_NOT_IMPLEMENTED;
|
||||
end;
|
||||
|
||||
function XRE_ParseAppData(aINIFile: nsILocalFile;
|
||||
out aAppData: nsXREAppData): nsresult;
|
||||
begin
|
||||
if Assigned(parseAppDataFunc) then
|
||||
Result := parseAppDataFunc(aINIFile, aAppData)
|
||||
else
|
||||
Result := NS_ERROR_NOT_IMPLEMENTED;
|
||||
end;
|
||||
|
||||
procedure XRE_FreeAppData(aAppData: PXREAppData);
|
||||
begin
|
||||
if Assigned(freeAppDataFunc) then
|
||||
freeAppDataFunc(aAppData);
|
||||
end;
|
||||
|
||||
end.
|
Reference in New Issue
Block a user