dom/plugins/base/nsPluginNativeWindowQt.cpp

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rw-r--r--

Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6

     1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
     2 /* vim:expandtab:shiftwidth=2:tabstop=2:
     3  */
     4 /* This Source Code Form is subject to the terms of the Mozilla Public
     5  * License, v. 2.0. If a copy of the MPL was not distributed with this
     6  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
     8 /**
     9  *  This file is the Qt implementation of plugin native window.
    10  */
    12 #include "nsDebug.h"
    13 #include "nsPluginNativeWindow.h"
    14 #include "npapi.h"
    16 /**
    17  * Qt implementation of plugin window
    18  */
    19 class nsPluginNativeWindowQt : public nsPluginNativeWindow
    20 {
    21 public:
    22   nsPluginNativeWindowQt();
    23   virtual ~nsPluginNativeWindowQt();
    25   virtual nsresult CallSetWindow(nsRefPtr<nsNPAPIPluginInstance> &aPluginInstance);
    26 private:
    28   NPSetWindowCallbackStruct mWsInfo;
    29 };
    31 nsPluginNativeWindowQt::nsPluginNativeWindowQt() : nsPluginNativeWindow()
    32 {
    33   //Initialize member variables
    34 #ifdef DEBUG
    35   fprintf(stderr,"\n\n\nCreating plugin native window %p\n\n\n", (void *) this);
    36 #endif
    37   window = nullptr;
    38   x = 0;
    39   y = 0;
    40   width = 0;
    41   height = 0;
    42   memset(&clipRect, 0, sizeof(clipRect));
    43   ws_info = &mWsInfo;
    44   type = NPWindowTypeWindow;
    45   mWsInfo.type = 0;
    46 #if defined(MOZ_X11)
    47   mWsInfo.display = nullptr;
    48   mWsInfo.visual = nullptr;
    49   mWsInfo.colormap = 0;
    50   mWsInfo.depth = 0;
    51 #endif
    52 }
    54 nsPluginNativeWindowQt::~nsPluginNativeWindowQt()
    55 {
    56 #ifdef DEBUG
    57   fprintf(stderr,"\n\n\nDestoying plugin native window %p\n\n\n", (void *) this);
    58 #endif
    59 }
    61 nsresult PLUG_NewPluginNativeWindow(nsPluginNativeWindow **aPluginNativeWindow)
    62 {
    63   NS_ENSURE_ARG_POINTER(aPluginNativeWindow);
    64   *aPluginNativeWindow = new nsPluginNativeWindowQt();
    65   return *aPluginNativeWindow ? NS_OK : NS_ERROR_OUT_OF_MEMORY;
    66 }
    68 nsresult PLUG_DeletePluginNativeWindow(nsPluginNativeWindow * aPluginNativeWindow)
    69 {
    70   NS_ENSURE_ARG_POINTER(aPluginNativeWindow);
    71   nsPluginNativeWindowQt *p = (nsPluginNativeWindowQt *)aPluginNativeWindow;
    72   delete p;
    73   return NS_OK;
    74 }
    76 nsresult nsPluginNativeWindowQt::CallSetWindow(nsRefPtr<nsNPAPIPluginInstance> &aPluginInstance)
    77 {
    78   if (aPluginInstance) {
    79     if (type == NPWindowTypeWindow) {
    80       return NS_ERROR_FAILURE;
    81     } // NPWindowTypeWindow
    82     aPluginInstance->SetWindow(this);
    83   }
    84   else if (mPluginInstance)
    85     mPluginInstance->SetWindow(nullptr);
    87   SetPluginInstance(aPluginInstance);
    88   return NS_OK;
    89 }

mercurial