CEF载入PPAPI插件

CEF基于Chromium和Webkit而来,支持PPAPI和NaCI。

CEF3的binary包默认已经支持PPAPI(參考http://magpcss.org/ceforum/viewtopic.php?

f=10&t=10509),以cefsimple为例(參考CEF Windows开发环境搭建)。能够通过命令行參数来注冊PPAPI plugin,通过–url參数传递一个载入相应plugin的html页面。

以下是我測试可用的一个命令行參数

--ppapi-out-of-process --register-pepper-plugins="D:\projects\cef_binary_3.2357.1271.g8e0674e_windows32\Release\stub.dll;application/x-ppapi-stub" --url=file:///d:/projects/cef_binary_3.2357.1271.g8e0674e_windows32/Release/stub.html

stub.html很easy,代码例如以下:

<!DOCTYPE html>
<html>
<head>
  <title>stub</title>
</head>

<body>

<embed id="plugin" type="application/x-ppapi-stub">

</body>
</html>

当中stub.dll是我编译的PPAPI SDK里的演示样例。做了些许修改。stub.c代码例如以下:

// Copyright (c) 2010 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// This is the simplest possible C Pepper plugin that does nothing. If you're
// using C++, you will want to look at stub.cc which uses the more convenient
// C++ wrappers.

#include <stddef.h>
#include <stdint.h>
#include <Windows.h>
#include <tchar.h>

#include "ppapi/c/pp_errors.h"
#include "ppapi/c/pp_module.h"
#include "ppapi/c/ppb.h"
#include "ppapi/c/ppp.h"
#include "ppapi/c/pp_instance.h"
#include "ppapi/c/ppp_instance.h"

PP_Module g_module_id;
PPB_GetInterface g_get_browser_interface = NULL;

PP_EXPORT int32_t PPP_InitializeModule(PP_Module module_id,
   PPB_GetInterface get_browser_interface) {
  // Save the global module information for later.
  g_module_id = module_id;
  g_get_browser_interface = get_browser_interface;
  OutputDebugString(_T("PPP_InitializeModule was called\r\n"));

  return PP_OK;
}

PP_EXPORT void PPP_ShutdownModule() {
OutputDebugString(_T("PPP_ShutdownModule was called\r\n"));
}

PP_EXPORT const void* PPP_GetInterface(const char* interface_name) {
  // You will normally implement a getter for at least PPP_INSTANCE_INTERFACE
  // here.
  return NULL;
}

如你所见,我仅仅是使用OutputDebugString函数输出了调试信息。

执行cefsimple。使用DbgView工具能够看到我们输出的信息。


关于PPAPI插件的细节。后面会有一些文章来讲。

相关文章參考:

posted on 2017-07-19 20:13  wgwyanfs  阅读(488)  评论(0编辑  收藏  举报

导航