void nsIObserver.Observe(nsISupports aSubject, string aTopic, string aData) { if (aTopic != ObserverNotifications.HttpRequests.HttpOnModifyRequest) return; using (var channel = HttpChannel.Create(aSubject)) { ObserveRequest(channel); } }
void nsIRequestObserver.OnStartRequest( nsIRequest aRequest, nsISupports aContext ) { var started = Started; if (started != null) { started(this, EventArgs.Empty); } }
void nsIRequestObserver.OnStopRequest( nsIRequest aRequest, nsISupports aContext, int aStatusCode ) { var stopped = Stopped; if (stopped != null) { stopped( this, EventArgs.Empty ); } }
public void Show(nsIHelperAppLauncher aLauncher, nsISupports aWindowContext, uint aReason) { if (Download != null) { Download(this, new LauncherDialogEvent(aLauncher, aWindowContext, aReason)); } else { aLauncher.Cancel(nsIHelperAppLauncherConstants.NS_BINDING_ABORTED); } }
void nsIHttpActivityObserver.ObserveActivity(nsISupports httpChannel, uint activityType, uint activitySubtype, long timestamp, ulong extraSizeData, nsACStringBase extraStringData) { switch (activityType) { case nsIHttpActivityObserverConstants.ACTIVITY_TYPE_SOCKET_TRANSPORT: SocketTransport( httpChannel, activitySubtype, timestamp, extraSizeData, extraStringData ); break; case nsIHttpActivityObserverConstants.ACTIVITY_TYPE_HTTP_TRANSACTION: HttpTransaction(httpChannel, activitySubtype, timestamp, extraSizeData, extraStringData); break; } }
public JSAutoCompartment(AutoJSContext context, nsISupports comObject) { if (context == null) throw new ArgumentNullException("context"); if (context.ContextPointer == IntPtr.Zero) throw new ArgumentException("context has Null ContextPointer"); if (context == null) throw new ArgumentNullException("comObject"); _obj = context.ConvertCOMObjectToJSObject(comObject); _cx = context.ContextPointer; _oldCompartment = SpiderMonkey.JS_EnterCompartment(_cx, _obj); }
void nsIObserver.Observe( nsISupports aSubject, string aTopic, string aData ) { switch (aTopic) { case ObserverNotifications.HttpRequests.HttpOnModifyRequest: using (var req = HttpChannel.Create( aSubject )) { // error handling will help in debug #if DEBUG try { Request( req ); } catch ( Exception e ) { Console.WriteLine("Exception in observer implementation"); } #else Request( req ); #endif } break; case ObserverNotifications.HttpRequests.HttpOnExamineResponse: using (var res = HttpChannel.Create( aSubject )) { // error handling will help in debug #if DEBUG try { Response( res ); } catch ( Exception e) { Console.WriteLine( "Exception in observer implementation" ); } #else Response( res ); #endif } break; } }
public void Observe(nsISupports aSubject, string aTopic, string aData) { if (aTopic.Equals(ObserverNotifications.HttpRequests.HttpOnModifyRequest)) { using (var httpChannel = HttpChannel.Create(aSubject)) { var origUri = httpChannel.OriginalUri; var uri = httpChannel.Uri; var uriRef = httpChannel.Referrer; var reqMethod = httpChannel.RequestMethod; var reqHeaders = httpChannel.GetRequestHeaders(); byte[] reqBody = null; bool? reqBodyContainsHeaders = null; #region POST data var uploadChannel = Xpcom.QueryInterface<nsIUploadChannel>(aSubject); var uploadChannel2 = Xpcom.QueryInterface<nsIUploadChannel2>(aSubject); if (uploadChannel != null) { var uc = new UploadChannel(uploadChannel); var uploadStream = uc.UploadStream; if (uploadStream != null) { if (uploadStream.CanSeek) { var rdr = new BinaryReader(uploadStream); var reqBodyStream = new MemoryStream(); try { reqBody = new byte[] { }; int avl = 0; while ((avl = ((int)uploadStream.Available)) > 0) { reqBodyStream.Write(rdr.ReadBytes(avl), 0, avl); } reqBody = reqBodyStream.ToArray(); if (uploadChannel2 != null) reqBodyContainsHeaders = uploadChannel2.GetUploadStreamHasHeadersAttribute(); } catch (IOException ex) { // failed to read body, ignore } // rewind stream, so browser can read it as usual uploadStream.Seek(0, 0); } } } #endregion POST data var evt = new GeckoObserveHttpModifyRequestEventArgs(uri, uriRef, reqMethod, reqBody, reqHeaders, httpChannel, reqBodyContainsHeaders); OnObserveHttpModifyRequest(evt); if (evt.Cancel) { httpChannel.Cancel(nsIHelperAppLauncherConstants.NS_BINDING_ABORTED); } } } }
/// <summary> /// Creates HttpChannel directly from nsISupports /// </summary> /// <param name="supports"></param> /// <returns></returns> public static HttpChannel Create(nsISupports supports) { //int count = Interop.ComDebug.GetRcwRefCount(supports); var channel = Xpcom.QueryInterface<nsIHttpChannel>(supports); if (channel == null) return null; Marshal.ReleaseComObject(channel); var ret = new HttpChannel((nsIHttpChannel)supports); //var count2=Interop.ComDebug.GetRcwRefCount( supports ); return ret; }
public SVGFETileElement(mozIDOMWindowProxy globalWindow, nsISupports thisObject) : base(globalWindow, thisObject) { }
/// <summary> /// Evaluate javascript in the current context. /// </summary> /// <param name="jsScript"></param> /// <param name="thisObject">a nsISupports com object that this is set too.</param> /// <param name="result"></param> /// <returns></returns> public bool EvaluateScript(string jsScript, nsISupports thisObject, out string result) { try { Guid guid = typeof(nsISupports).GUID; IntPtr globalObject = SpiderMonkey.JS_GetGlobalForScopeChain(_cx); var ptr = new JsVal(); var wrapper = XPConnect.WrapNative(_cx, globalObject, thisObject, ref guid); bool ret = SpiderMonkey.JS_EvaluateScript(_cx, wrapper.GetJSObjectAttribute(), jsScript, (uint)jsScript.Length, "script", 1, ref ptr); IntPtr jsStringPtr = SpiderMonkey.JS_ValueToString(_cx, ptr); result = Marshal.PtrToStringAnsi(SpiderMonkey.JS_EncodeString(_cx, jsStringPtr)); return ret; } catch (Exception e) { Console.WriteLine("Exception {0}", e); result = String.Empty; return false; } }
public void CanAccess(uint aAction, IntPtr aCallContext, IntPtr aJSContext, IntPtr aJSObject, nsISupports aObj, nsIClassInfo aClassInfo, IntPtr aName, ref IntPtr aPolicy) { }
/// <summary>The async prompt authentication.</summary> /// <param name="parent">The parent.</param> /// <param name="channel">The channel.</param> /// <param name="callback">The callback.</param> /// <param name="context">The context.</param> /// <param name="level">The level.</param> /// <param name="authInfo">The authentication info.</param> /// <param name="checkboxLabel">The checkbox label.</param> /// <param name="checkValue">The check value.</param> /// <returns>The <see cref="nsICancelable"/>.</returns> public nsICancelable AsyncPromptAuth( nsIDOMWindow parent, nsIChannel channel, nsIAuthPromptCallback callback, nsISupports context, uint level, nsIAuthInformation authInfo, string checkboxLabel, ref bool checkValue) { return PromptService.AsyncPromptAuth(channel, callback, context, level, authInfo); }
public PopStateEvent(nsIDOMWindow globalWindow, nsISupports thisObject) : base(globalWindow, thisObject) { }
public Promise Put(WebIDLUnion <nsISupports, USVString> request, nsISupports response) { return(this.CallMethod <Promise>("put", request, response)); }
public HTMLOutputElement(nsIDOMWindow globalWindow, nsISupports thisObject) : base(globalWindow, thisObject) { }
public RTCIceCandidate(mozIDOMWindowProxy globalWindow, nsISupports thisObject) : base(globalWindow, thisObject) { }
public HTMLTableSectionElement(nsIDOMWindow globalWindow, nsISupports thisObject) : base(globalWindow, thisObject) { }
public SVGAnimatedPathData(nsIDOMWindow globalWindow, nsISupports thisObject) : base(globalWindow, thisObject) { }
public Cache(mozIDOMWindowProxy globalWindow, nsISupports thisObject) : base(globalWindow, thisObject) { }
public IntPtr ConvertCOMObjectToJSObject(nsISupports obj) { Guid guid = typeof(nsISupports).GUID; IntPtr globalObject = GetGlobalObject(); using (var holder = new ComPtr<nsIXPConnectJSObjectHolder>(Xpcom.XPConnect.Instance.WrapNative(_cx, globalObject, (nsISupports)obj, ref guid))) { int slot = holder.GetSlotOfComMethod(new Func<IntPtr>(holder.Instance.GetJSObject)); var getJSObject = holder.GetComMethod<Xpcom.GetJSObjectFromHolderDelegate>(slot); return getJSObject(holder.Instance); } }
public MozCellBroadcast(nsIDOMWindow globalWindow, nsISupports thisObject) : base(globalWindow, thisObject) { }
public void PushCompartmentScope(nsISupports obj) { _compartmentStack.Push(new JSAutoCompartment(this, obj)); }
public Promise SetMediaKeys(nsISupports mediaKeys) { return(this.CallMethod <Promise>("setMediaKeys", mediaKeys)); }
public AnimationPlaybackEvent(mozIDOMWindowProxy globalWindow, nsISupports thisObject) : base(globalWindow, thisObject) { }
public AlarmsManager(nsIDOMWindow globalWindow, nsISupports thisObject) : base(globalWindow, thisObject) { }
public void AddRequest(Request request,nsISupports aContext) { _loadGroup.AddRequest( request.NativeRequest, aContext ); }
public WorkerDebuggerGlobalScope(nsIDOMWindow globalWindow, nsISupports thisObject) : base(globalWindow, thisObject) { }
public void RemoveTrack(nsISupports track) { this.CallVoidMethod("removeTrack", track); }
public ScrollViewChangeEvent(nsIDOMWindow globalWindow, nsISupports thisObject) : base(globalWindow, thisObject) { }
public void Speak(nsISupports utterance) { this.CallVoidMethod("speak", utterance); }
public SVGPathSegArcAbs(nsIDOMWindow globalWindow, nsISupports thisObject) : base(globalWindow, thisObject) { }
private void SetValue(string name, nsISupports value) { if (name == null) throw new ArgumentNullException("name"); using (var data = Xpcom.CreateInstance2<nsIWritableVariant>("@mozilla.org/variant;1")) { data.Instance.SetAsISupports(value); using (var key = new nsAString(name)) { object comObj = command.Instance.SetUserData(key, data.Instance, null); Xpcom.FreeComObject(ref comObj); } } }
public Performance(mozIDOMWindowProxy globalWindow, nsISupports thisObject) : base(globalWindow, thisObject) { }
//public void ObserveActivity(nsISupports aHttpChannel, uint aActivityType, uint aActivitySubtype, uint aTimestamp, ulong aExtraSizeData, nsACString aExtraStringData) public void ObserveActivity(nsISupports aHttpChannel, UInt32 aActivityType, UInt32 aActivitySubtype, Int64 aTimestamp, UInt64 aExtraSizeData, nsACStringBase aExtraStringData) { nsIHttpChannel httpChannel = Xpcom.QueryInterface<nsIHttpChannel>(aHttpChannel); if (httpChannel != null) { switch (aActivityType) { case nsIHttpActivityObserverConstants.ACTIVITY_TYPE_SOCKET_TRANSPORT: switch (aActivitySubtype) { case nsISocketTransportConstants.STATUS_RESOLVING: break; case nsISocketTransportConstants.STATUS_RESOLVED: break; case nsISocketTransportConstants.STATUS_CONNECTING_TO: break; case nsISocketTransportConstants.STATUS_CONNECTED_TO: break; case nsISocketTransportConstants.STATUS_SENDING_TO: break; case nsISocketTransportConstants.STATUS_WAITING_FOR: break; case nsISocketTransportConstants.STATUS_RECEIVING_FROM: break; } break; case nsIHttpActivityObserverConstants.ACTIVITY_TYPE_HTTP_TRANSACTION: switch (aActivitySubtype) { case nsIHttpActivityObserverConstants.ACTIVITY_SUBTYPE_REQUEST_HEADER: { activeNetworkChannels++; ActiveNetworkChannelUrls.Add(nsString.Get(httpChannel.GetURIAttribute().GetSpecAttribute)); var callbacks = httpChannel.GetNotificationCallbacksAttribute(); if (callbacks != null) { var httpChannelXHR = Xpcom.QueryInterface<nsIXMLHttpRequest>(callbacks); if (httpChannelXHR != null) { nsIXMLHttpRequestEventTarget mXMLRequestEvent = Xpcom.QueryInterface<nsIXMLHttpRequestEventTarget>(httpChannelXHR); if (mXMLRequestEvent != null) { GeckoJavaScriptHttpChannelWrapper mEventListener = new GeckoJavaScriptHttpChannelWrapper(this, httpChannel); origJavaScriptHttpChannels.Add(httpChannel, mEventListener); using (nsAString mLoads = new nsAString("load")) { mXMLRequestEvent.AddEventListener(mLoads, mEventListener, true, false, 0); } using (nsAString mLoads = new nsAString("abort")) { mXMLRequestEvent.AddEventListener(mLoads, mEventListener, true, false, 0); } using (nsAString mLoads = new nsAString("error")) { mXMLRequestEvent.AddEventListener(mLoads, mEventListener, true, false, 0); } Marshal.ReleaseComObject(mXMLRequestEvent); } Marshal.ReleaseComObject(httpChannelXHR); } Marshal.ReleaseComObject(callbacks); } } break; case nsIHttpActivityObserverConstants.ACTIVITY_SUBTYPE_REQUEST_BODY_SENT: break; case nsIHttpActivityObserverConstants.ACTIVITY_SUBTYPE_RESPONSE_START: break; case nsIHttpActivityObserverConstants.ACTIVITY_SUBTYPE_RESPONSE_COMPLETE: break; case nsIHttpActivityObserverConstants.ACTIVITY_SUBTYPE_TRANSACTION_CLOSE: activeNetworkChannels--; ActiveNetworkChannelUrls.Remove(nsString.Get(httpChannel.GetURIAttribute().GetSpecAttribute)); break; } break; } } }
public HTMLTimeElement(mozIDOMWindowProxy globalWindow, nsISupports thisObject) : base(globalWindow, thisObject) { }
/// <summary> /// Evaluate javascript in the current context. /// </summary> /// <param name="jsScript"></param> /// <param name="thisObject">a nsISupports com object that this is set too.</param> /// <param name="result"></param> /// <returns></returns> public bool EvaluateScript(string jsScript, nsISupports thisObject, out string result) { try { Guid guid = typeof(nsISupports).GUID; var ptr = new JsVal(); IntPtr globalObject = ConvertCOMObjectToJSObject(thisObject); using (new JSAutoCompartment(_cx, globalObject)) { bool ret = SpiderMonkey.JS_EvaluateScript(_cx, globalObject, jsScript, (uint)jsScript.Length, "script", 1, ref ptr); result = ret ? ConvertValueToString(ptr) : null; return ret; } } catch (Exception e) { Console.WriteLine("Exception {0}", e); result = String.Empty; return false; } }
public WindowClient(mozIDOMWindowProxy globalWindow, nsISupports thisObject) : base(globalWindow, thisObject) { }
public JsVal ConvertCOMObjectToJSVal(IntPtr globalObject, nsISupports thisObject) { var writableVariant = Xpcom.CreateInstance2<nsIWritableVariant>(Contracts.WritableVariant); writableVariant.Instance.SetAsISupports(thisObject); return Xpcom.XPConnect.Instance.VariantToJS(_cx, globalObject, writableVariant.Instance); }
IntPtr nsIFactory.CreateInstance(nsISupports aOuter, ref Guid iid) { IntPtr result = IntPtr.Zero; IntPtr iUnknownForObject = Marshal.GetIUnknownForObject(new LauncherDialog()); Marshal.QueryInterface(iUnknownForObject, ref iid, out result); Marshal.Release(iUnknownForObject); return result; }
public nsISupports Initialize(nsISupports newItem) { return(this.CallMethod <nsISupports>("initialize", newItem)); }
public MediaStream(nsIDOMWindow globalWindow, nsISupports thisObject) : base(globalWindow, thisObject) { }
public nsISupports InsertItemBefore(nsISupports newItem, uint index) { return(this.CallMethod <nsISupports>("insertItemBefore", newItem, index)); }
public nsISupports ReplaceItem(nsISupports newItem, uint index) { return(this.CallMethod <nsISupports>("replaceItem", newItem, index)); }
public nsILocalFile PromptForSaveToFile(nsIHelperAppLauncher aLauncher, nsISupports aWindowContext, string aDefaultFileName, string aSuggestedFileExtension, bool aForcePrompt) { aLauncher.Cancel(nsIHelperAppLauncherConstants.NS_BINDING_ABORTED); return null; }
public nsISupports AppendItem(nsISupports newItem) { return(this.CallMethod <nsISupports>("appendItem", newItem)); }
public LauncherDialogEvent(nsIHelperAppLauncher aLauncher, nsISupports aWindowContext, uint aReason) { HelperAppLauncher = aLauncher; WebNavigation = (nsIWebNavigation)aWindowContext; }
protected virtual void HttpTransaction(nsISupports httpChannel,uint activitySubtype, long timestamp, ulong extraSizeData, nsACStringBase extraStringData) { }
public void CanCreateWrapper(IntPtr aJSContext, ref Guid aIID, nsISupports aObj, nsIClassInfo aClassInfo, ref IntPtr aPolicy) { }
IntPtr nsIFactory.CreateInstance(nsISupports aOuter, ref Guid iid) { return Marshal.GetIUnknownForObject(new PromptService()); }
public void RemoveRequest( Request request, nsISupports aContext, int aStatus ) { _loadGroup.RemoveRequest( request.NativeRequest, aContext, aStatus ); }
void nsIFactory.CreateInstance(nsISupports aOuter, ref Guid iid, out object result) { result = new PromptService(); }
public nsISupports CreateSVGTransformFromMatrix(nsISupports matrix) { return(this.CallMethod <nsISupports>("createSVGTransformFromMatrix", matrix)); }
public void AddTrack(nsISupports track) { this.CallVoidMethod("addTrack", track); }
//public void ObserveActivity(nsISupports aHttpChannel, uint aActivityType, uint aActivitySubtype, uint aTimestamp, ulong aExtraSizeData, nsACString aExtraStringData) public void ObserveActivity(nsISupports aHttpChannel, UInt32 aActivityType, UInt32 aActivitySubtype, Int64 aTimestamp, UInt64 aExtraSizeData, nsACStringBase aExtraStringData) { nsIHttpChannel httpChannel = Xpcom.QueryInterface<nsIHttpChannel>(aHttpChannel); if (httpChannel != null) { switch (aActivityType) { case nsIHttpActivityObserverConstants.ACTIVITY_TYPE_SOCKET_TRANSPORT: switch (aActivitySubtype) { case nsISocketTransportConstants.STATUS_RESOLVING: break; case nsISocketTransportConstants.STATUS_RESOLVED: break; case nsISocketTransportConstants.STATUS_CONNECTING_TO: break; case nsISocketTransportConstants.STATUS_CONNECTED_TO: break; case nsISocketTransportConstants.STATUS_SENDING_TO: break; case nsISocketTransportConstants.STATUS_WAITING_FOR: break; case nsISocketTransportConstants.STATUS_RECEIVING_FROM: break; } break; case nsIHttpActivityObserverConstants.ACTIVITY_TYPE_HTTP_TRANSACTION: switch (aActivitySubtype) { case nsIHttpActivityObserverConstants.ACTIVITY_SUBTYPE_REQUEST_HEADER: { activeNetworkChannels++; var callbacks = httpChannel.GetNotificationCallbacksAttribute(); var httpChannelXHR = Xpcom.QueryInterface<nsIXMLHttpRequest>(callbacks); if (httpChannelXHR != null) { nsIDOMEventListener origEventListener = httpChannelXHR.GetOnreadystatechangeAttribute(); var newEventListener = new GeckoJavaScriptHttpChannelWrapper(this, httpChannel, origEventListener); origJavaScriptHttpChannels.Add(httpChannel, newEventListener); httpChannelXHR.SetOnreadystatechangeAttribute(newEventListener); } } break; case nsIHttpActivityObserverConstants.ACTIVITY_SUBTYPE_REQUEST_BODY_SENT: break; case nsIHttpActivityObserverConstants.ACTIVITY_SUBTYPE_RESPONSE_START: break; case nsIHttpActivityObserverConstants.ACTIVITY_SUBTYPE_RESPONSE_COMPLETE: break; case nsIHttpActivityObserverConstants.ACTIVITY_SUBTYPE_TRANSACTION_CLOSE: activeNetworkChannels--; break; } break; } } }
public SVGTransformList(nsIDOMWindow globalWindow, nsISupports thisObject) : base(globalWindow, thisObject) { }
public nsICancelable AsyncPromptAuth(nsIDOMWindow aParent, nsIChannel aChannel, nsIAuthPromptCallback aCallback, nsISupports aContext, uint level, nsIAuthInformation authInfo, string checkboxLabel, ref bool checkValue) { //throw new NotImplementedException(); return null; }
public BluetoothStatusChangedEvent(nsIDOMWindow globalWindow, nsISupports thisObject) : base(globalWindow, thisObject) { }
public nsIDOMWindow OpenDialog(nsAString url, nsAString name, nsAString options, nsISupports aExtraArgument) { throw new NotImplementedException(); }
public MOZ_debug(mozIDOMWindowProxy globalWindow, nsISupports thisObject) : base(globalWindow, thisObject) { }