Esempio n. 1
0
        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));
        }
Esempio n. 2
0
        void GeckoWebBrowser_Loaded(object sender, System.Windows.RoutedEventArgs e)
        {
            Xpcom.Initialize();
            _webBrowser      = Xpcom.CreateInstance2 <nsIWebBrowser>(Contracts.WebBrowser);
            _webBrowserFocus = (nsIWebBrowserFocus)_webBrowser.Instance;
            _baseWindow      = (nsIBaseWindow)_webBrowser.Instance;
            _webNav          = (nsIWebNavigation)_webBrowser.Instance;
            _webBrowser.Instance.SetContainerWindowAttribute(this);

            _baseWindow.InitWindow(Handle, IntPtr.Zero, 0, 0,
                                   (int)(ActualWidth * DpiX / 96),
                                   (int)(ActualHeight * DpiY / 96));
            _baseWindow.Create();

            #region nsIWebProgressListener/nsIWebProgressListener2
            Guid nsIWebProgressListenerGUID  = typeof(nsIWebProgressListener).GUID;
            Guid nsIWebProgressListener2GUID = typeof(nsIWebProgressListener2).GUID;
            _webProgressWeakReference = _webProgressListener.GetWeakReference();
            _webBrowser.Instance.AddWebBrowserListener(_webProgressWeakReference, ref nsIWebProgressListenerGUID);
            _webBrowser.Instance.AddWebBrowserListener(_webProgressWeakReference, ref nsIWebProgressListener2GUID);

            _webProgressListener.OnStateChangeCallback += this.OnStateChange;

            #endregion

            _baseWindow.SetVisibilityAttribute(true);
        }
 public void SetData(string data)
 {
     using (var stringInputStream = Xpcom.CreateInstance2 <nsIStringInputStream>(Contracts.StringInputStream))
     {
         stringInputStream.Instance.SetData(data, data.Length);
         _inputStream.Instance.SetData(stringInputStream.Instance);
     }
 }
Esempio n. 4
0
        private nsIDOMXPathResult EvaluateXPathInternal(string xpath)
        {
            var                   evaluator = Xpcom.CreateInstance2 <nsIDOMXPathEvaluator>(Contracts.XPathEvaluator);
            nsIDOMNode            node      = DomObject;
            nsIDOMXPathNSResolver resolver  = evaluator.Instance.CreateNSResolver(node);
            nsIDOMXPathResult     result    =
                ( nsIDOMXPathResult )evaluator.Instance.Evaluate(new nsAString(xpath), node, resolver, 0, null);

            return(result);
        }
Esempio n. 5
0
        private nsIXPathResult EvaluateXPathInternal(string xpath)
        {
            nsIXPathResult result;

            using (var evaluator = Xpcom.CreateInstance2 <nsIDOMXPathEvaluator>(Contracts.XPathEvaluator))
            {
                var node     = DomObject;
                var resolver =
                    new WebIDL.XPathEvaluator(this.OwnerDocument.DefaultView.DomWindow, (nsISupports)this.OwnerDocument.DomObject)
                    .CreateNSResolver(node);
                result = (nsIXPathResult)evaluator.Instance.Evaluate(new nsAString(xpath), node, resolver, 0, null);
            }

            return(result);
        }
Esempio n. 6
0
        internal byte[] DrawWindow(nsIDOMWindow window, uint x, uint y, uint w, uint h)
        {
            Xpcom.AssertCorrectThread();
            Init();

            SetValue("x", x);
            SetValue("y", y);
            SetValue("w", w);
            SetValue("h", h);

            using (var data = Xpcom.CreateInstance2 <nsIWritableVariant>("@mozilla.org/variant;1"))
            {
                data.Instance.SetAsISupports((nsISupports)window);
                using (var key = new nsAString("window"))
                {
                    object comObj = command.Instance.SetUserData(key, data.Instance, null);
                    Xpcom.FreeComObject(ref comObj);
                    command.Instance.DoCommand();
                    comObj = command.Instance.SetUserData(key, null, null);
                    Xpcom.FreeComObject(ref comObj);
                }
            }
            string base64Image = null;

            using (var key = new nsAString("drawResult"))
            {
                using (var drawResult = command.Instance.SetUserData(key, null, null).AsComPtr())
                {
                    if (drawResult != null)
                    {
                        base64Image = drawResult.Instance.GetAsWString();
                    }
                }
            }

            if (base64Image == null)
            {
                throw new InvalidOperationException();
            }
            if (!base64Image.StartsWith("data:image/png;base64,"))
            {
                throw new InvalidOperationException(base64Image);
            }

            byte[] bytes = Convert.FromBase64String(base64Image.Substring("data:image/png;base64,".Length));
            return(bytes);
        }
Esempio n. 7
0
        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);
                }
            }
        }
Esempio n. 8
0
 public Pipe()
 {
     _pipe = Xpcom.CreateInstance2 <nsIPipe>(Contracts.Pipe);
     _pipe.Instance.Init(true, true, 0, 0);
 }
Esempio n. 9
0
 public Sound()
 {
     _sound = Xpcom.CreateInstance2 <nsISound>(Contracts.Sound);
     _sound.Instance.Init();
 }
 public GeckoMIMEInputStream()
 {
     _inputStream = Xpcom.CreateInstance2 <nsIMIMEInputStream>(Contracts.MimeInputStream);
 }