1// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include <cstdio>
6#include <cstdlib>
7#include <cstring>
8
9#include "native_client/src/include/nacl_macros.h"
10#include "native_client/src/shared/platform/nacl_check.h"
11#include "ppapi/c/pp_errors.h"
12#include "ppapi/c/pp_instance.h"
13#include "ppapi/c/pp_module.h"
14#include "ppapi/c/pp_var.h"
15#include "ppapi/c/ppb.h"
16#include "ppapi/c/ppp.h"
17#include "ppapi/c/ppp_instance.h"
18#include "ppapi/native_client/tests/ppapi_test_lib/test_interface.h"
19
20PP_EXPORT int32_t PPP_InitializeModule(PP_Module module_id,
21                                       PPB_GetInterface get_browser_interface) {
22  printf("PPP_InitializeModule\n");
23  CRASH;
24
25  return PP_OK;
26}
27
28PP_EXPORT void PPP_ShutdownModule() {
29  printf("PPP_ShutdownModule\n");
30}
31
32// Ensure that all other loading steps do not generate errors that might mask
33// a missing crash above.
34
35namespace {
36
37PP_Bool DidCreate(PP_Instance /*instance*/,
38                  uint32_t /*argc*/,
39                  const char* /*argn*/[],
40                  const char* /*argv*/[]) {
41  return PP_TRUE;
42}
43
44void DidDestroy(PP_Instance /*instance*/) {
45}
46
47void DidChangeView(PP_Instance /*instance*/, PP_Resource /*view*/) {
48}
49
50void DidChangeFocus(PP_Instance /*instance*/, PP_Bool /*has_focus*/) {
51}
52
53PP_Bool HandleDocumentLoad(PP_Instance /*instance*/, PP_Resource /*loader*/) {
54  return PP_FALSE;
55}
56
57const PPP_Instance instance_interface = {
58  DidCreate,
59  DidDestroy,
60  DidChangeView,
61  DidChangeFocus,
62  HandleDocumentLoad
63};
64
65}  // namespace
66
67PP_EXPORT const void* PPP_GetInterface(const char* interface_name) {
68  printf("PPP_GetInterface\n");
69  if (0 == std::strcmp(interface_name, PPP_INSTANCE_INTERFACE))  // Required.
70    return reinterpret_cast<const void*>(&instance_interface);
71  return NULL;
72}
73