Exemplo n.º 1
0
//---------------------------------------------------------------------------
// NPP_SetWindow:
//---------------------------------------------------------------------------
NPError NP_LOADDS NPP_SetWindow(NPP pInstance, NPWindow * pNPWindow)
{
  if(pInstance == NULL)
  {
    dbgOut1("NPP_SetWindow returns NPERR_INVALID_INSTANCE_ERROR");
    return NPERR_INVALID_INSTANCE_ERROR;
  }

  if(pNPWindow == NULL)
  {
    dbgOut1("NPP_SetWindow returns NPERR_GENERIC_ERROR");
    return NPERR_GENERIC_ERROR;
  }

  HWND hWnd = (HWND)(DWORD)pNPWindow->window;

  CPlugin * pPlugin = (CPlugin *)pInstance->pdata;
  assert(pPlugin != NULL);

  if(pPlugin == NULL) 
  {
    dbgOut1("NPP_SetWindow returns NPERR_GENERIC_ERROR");
    return NPERR_GENERIC_ERROR;
  }

  if((hWnd == NULL) && (pPlugin->getWindow() == NULL)) // spurious entry
  {
    dbgOut1("NPP_SetWindow just returns with NPERR_NO_ERROR");
    return NPERR_NO_ERROR;
  }

  if((hWnd == NULL) && (pPlugin->getWindow() != NULL))
  { // window went away
    dbgOut1("NPP_SetWindow, going away...");
    pPlugin->shut();
    return NPERR_NO_ERROR;
  }

  if((pPlugin->getWindow() == NULL) && (hWnd != NULL))
  { // First time in -- no window created by plugin yet
    dbgOut1("NPP_SetWindow, first time");

    if(!pPlugin->init(hWnd))
    {
      delete pPlugin;
      pPlugin = NULL;
      return NPERR_MODULE_LOAD_FAILED_ERROR;
    }
  }

  if((pPlugin->getWindow() != NULL) && (hWnd != NULL))
  { // Netscape window has been resized
    dbgOut1("NPP_SetWindow, resizing");
    pPlugin->resize();
  }

  return NPERR_NO_ERROR;
}
Exemplo n.º 2
0
// during this call we know when the plugin window is ready or
// is about to be destroyed so we can do some gui specific
// initialization and shutdown
NPError NPP_SetWindow (NPP instance, NPWindow *pNPWindow)
{   
	if(instance == NULL)
	{
		return NPERR_INVALID_INSTANCE_ERROR;
	}
	
	NPError rv = NPERR_NO_ERROR;

	if(pNPWindow == NULL)
	{
		return NPERR_GENERIC_ERROR;
	}
	
	CPlugin * pPlugin = (CPlugin *)instance->pdata;

	if(pPlugin == NULL) 
	{
		return NPERR_GENERIC_ERROR;
	}
	
	// window just created
	if(!pPlugin->isInitialized() && (pNPWindow->window != NULL)) 
	{ 
		if(!pPlugin->init(pNPWindow))
		{
			delete pPlugin;
			pPlugin = NULL;
			return NPERR_MODULE_LOAD_FAILED_ERROR;
		}
	}

	// window goes away
	if((pNPWindow->window == NULL) && pPlugin->isInitialized())
	{
		return NPERR_NO_ERROR;
	}
	
	// window resized
	if(pPlugin->isInitialized() && (pNPWindow->window != NULL))
	{
		return NPERR_NO_ERROR;
	}
	
	// this should not happen, nothing to do
	if((pNPWindow->window == NULL) && !pPlugin->isInitialized())
	{
		return NPERR_NO_ERROR;
	}

	return rv;
}
Exemplo n.º 3
0
/**
 * Called when the webview finished loading a new page
 */
void Cordova::loadFinished( bool ok ) {
    Q_UNUSED(ok)

    // Change into the xml-directory
    QDir xmlDir( m_workingDir );
    xmlDir.cd( "xml" );

    // Try to open the plugins configuration
    QFile pluginsXml( xmlDir.filePath("plugins.xml") );
    if( !pluginsXml.open( QIODevice::ReadOnly | QIODevice::Text ) ) {
        qDebug() << "Error loading plugins config!";
        return;
    }

    // Start reading the file as a stream
    QXmlStreamReader plugins;
    plugins.setDevice( &pluginsXml );

    // Iterate over plugins-configuration and load all according plugins
    while(!plugins.atEnd()) {
        if( plugins.readNext() == QXmlStreamReader::StartElement ) {
            // Check if we have a plugin element
            if( plugins.name() == "plugin" ) {
                QXmlStreamAttributes attribs = plugins.attributes();
                // Check for name & value attributes
                if( attribs.hasAttribute("name") && attribs.hasAttribute("value") ) {
                    // Construct object & attribute names
                    QString attribName = attribs.value( "name" ).toString();
                    QString attribValue = attribs.value( "value" ).toString();

                    qDebug() << "Adding Plugin " << attribName << " with " << attribValue;
                    // Check for such a plugin
                    CPlugin *currPlugin = PluginRegistry::getRegistry()->getPlugin( attribValue );
                    if(currPlugin) {
                        currPlugin->init();
                        emit pluginWantsToBeAdded(attribValue, currPlugin, attribName);
                        execJS( "Cordova.enablePlugin( '" + attribValue + "' )" );
                    }
                    else {
                        qDebug() << "Unknown Plugin " << attribName;
                    }
                }
            }
        }
    }

    // Device is now ready to rumble
    execJS( "Cordova.deviceready();" );
}
Exemplo n.º 4
0
// during this call we know when the plugin window is ready or
// is about to be destroyed so we can do some gui specific
// initialization and shutdown
NPError NPP_SetWindow (NPP instance, NPWindow* pNPWindow)
{    
	if(instance == NULL)
		return NPERR_INVALID_INSTANCE_ERROR;

	NPError rv = NPERR_NO_ERROR;

	if(pNPWindow == NULL)
		return NPERR_GENERIC_ERROR;

	CPlugin * pPlugin = (CPlugin *)instance->pdata;

	if(pPlugin == NULL) 
		return NPERR_GENERIC_ERROR;
	
	// window just created
	if(!pPlugin->isInitialized()) 
	{ 
		if(!pPlugin->init(pNPWindow)) 
		{
			return NPERR_MODULE_LOAD_FAILED_ERROR;
		}
		return NPERR_NO_ERROR;
	}
	else
	{
		// window goes away
		if(pNPWindow->window == NULL)
			return NPERR_NO_ERROR;

		// window resized
		if(pNPWindow->window != NULL)
		{
			pPlugin->SetWindow(pNPWindow);
			return NPERR_NO_ERROR;
		}
	}

	return rv;
}
Exemplo n.º 5
0
//---------------------------------------------------------------------------
// NPP_New:
//---------------------------------------------------------------------------
NPError NP_LOADDS NPP_New(NPMIMEType pluginType,
                          NPP pInstance,
                          uint16_t mode,
                          int16_t argc,
                          char* argn[],
                          char* argv[],
                          NPSavedData* saved)
{
  if(pInstance == NULL)
    return NPERR_INVALID_INSTANCE_ERROR;

  // See if the content provider specified from where to fetch the plugin
  char * szPageURL = NULL;
  char * szFileURL = NULL;
  char * szFileExtension = NULL;
  char * buf = NULL;
  BOOL bHidden = false;

  for(int i = 0; i < argc; i++)
  {
    if(lstrcmpi(argn[i],"pluginspage") == 0 && argv[i] != NULL)
      szPageURL = (char *)argv[i];
    else if(lstrcmpi(argn[i],"codebase") == 0 && argv[i] != NULL)
      szPageURL = (char *)argv[i];
    else if(lstrcmpi(argn[i],"pluginurl") == 0 && argv[i] != NULL)
      szFileURL = (char *)argv[i];
    else if(lstrcmpi(argn[i],"classid") == 0 && argv[i] != NULL)
      szFileURL = (char *)argv[i];
    else if(lstrcmpi(argn[i],"SRC") == 0 && argv[i] != NULL)
      buf = (char *)argv[i];
    else if(lstrcmpi(argn[i],"HIDDEN") == 0 && argv[i] != NULL)
      bHidden = (lstrcmp((char *)argv[i], "TRUE") == 0);
  }

  /* some post-processing on the filename to attempt to extract the extension:  */
  if(buf != NULL)
  {
    buf = strrchr(buf, '.');
    if(buf)
      szFileExtension = ++buf;
  }

  CPlugin * pPlugin = new CPlugin(hInst, 
                                  pInstance, 
                                  mode, 
                                  pluginType, 
                                  szPageURL, 
                                  szFileURL, 
                                  szFileExtension,
                                  bHidden);
  if(pPlugin == NULL)
    return NPERR_OUT_OF_MEMORY_ERROR;

  if(bHidden)
  {
    if(!pPlugin->init(NULL))
    {
      delete pPlugin;
      pPlugin = NULL;
      return NPERR_MODULE_LOAD_FAILED_ERROR;
    }
  }

  pInstance->pdata = (void *)pPlugin;

  return NPERR_NO_ERROR;
}