1effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch// Copyright 2014 The Chromium Authors. All rights reserved.
2effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch// found in the LICENSE file.
4effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
5effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "mojo/examples/pepper_container_app/plugin_instance.h"
6effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
7effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "base/logging.h"
8effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "mojo/examples/pepper_container_app/graphics_3d_resource.h"
9effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "mojo/examples/pepper_container_app/mojo_ppapi_globals.h"
10effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "ppapi/c/pp_errors.h"
11effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "ppapi/c/pp_var.h"
12effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "ppapi/c/ppp_graphics_3d.h"
13effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "ppapi/c/ppp_instance.h"
14effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "ppapi/shared_impl/ppb_view_shared.h"
15effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "ppapi/shared_impl/proxy_lock.h"
16effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "ppapi/shared_impl/tracked_callback.h"
17effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "ppapi/thunk/enter.h"
18effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "ppapi/thunk/ppb_graphics_3d_api.h"
19effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
20effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochnamespace mojo {
21effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochnamespace examples {
22effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
23effb81e5f8246d0db0270817048dc992db66e9fbBen MurdochPluginInstance::PluginInstance(scoped_refptr<PluginModule> plugin_module)
24effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch    : pp_instance_(0),
25effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch      plugin_module_(plugin_module) {
26effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  pp_instance_ = MojoPpapiGlobals::Get()->AddInstance(this);
27effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
28effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
29effb81e5f8246d0db0270817048dc992db66e9fbBen MurdochPluginInstance::~PluginInstance() {
30effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  MojoPpapiGlobals::Get()->InstanceDeleted(pp_instance_);
31effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
32effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
33effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochbool PluginInstance::DidCreate() {
34effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  ppapi::ProxyAutoUnlock unlock;
35effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  const PPP_Instance_1_1* instance_interface =
36effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch      static_cast<const PPP_Instance_1_1*>(plugin_module_->GetPluginInterface(
37effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch          PPP_INSTANCE_INTERFACE_1_1));
38effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  return !!instance_interface->DidCreate(pp_instance(), 0, NULL, NULL);
39effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
40effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
41effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochvoid PluginInstance::DidDestroy() {
42effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  ppapi::ProxyAutoUnlock unlock;
43effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  const PPP_Instance_1_1* instance_interface =
44effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch      static_cast<const PPP_Instance_1_1*>(plugin_module_->GetPluginInterface(
45effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch          PPP_INSTANCE_INTERFACE_1_1));
46effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  instance_interface->DidDestroy(pp_instance());
47effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
48effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
49effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochvoid PluginInstance::DidChangeView(const PP_Rect& bounds) {
50effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  ppapi::ViewData view_data;
51effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  view_data.rect = bounds;
52effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  view_data.is_fullscreen = false;
53effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  view_data.is_page_visible = true;
54effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  view_data.clip_rect = bounds;
55effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  view_data.device_scale = 1.0f;
56effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  view_data.css_scale = 1.0f;
57effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
58effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  ppapi::ScopedPPResource resource(ppapi::ScopedPPResource::PassRef(),
59effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch      (new ppapi::PPB_View_Shared(
60effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch          ppapi::OBJECT_IS_IMPL, pp_instance(), view_data))->GetReference());
61effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  {
62effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch    ppapi::ProxyAutoUnlock unlock;
63effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch    const PPP_Instance_1_1* instance_interface =
64effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch        static_cast<const PPP_Instance_1_1*>(plugin_module_->GetPluginInterface(
65effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch            PPP_INSTANCE_INTERFACE_1_1));
66effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch    instance_interface->DidChangeView(pp_instance(), resource);
67effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  }
68effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
69effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
70effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochvoid PluginInstance::Graphics3DContextLost() {
71effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  ppapi::ProxyAutoUnlock unlock;
72effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  const PPP_Graphics3D_1_0* graphic_3d_interface =
73effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch      static_cast<const PPP_Graphics3D_1_0*>(plugin_module_->GetPluginInterface(
74effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch          PPP_GRAPHICS_3D_INTERFACE_1_0));
75effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  // TODO(yzshen): Maybe we only need to notify for the bound graphics context?
76effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  graphic_3d_interface->Graphics3DContextLost(pp_instance());
77effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
78effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
79effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochbool PluginInstance::IsBoundGraphics(PP_Resource device) const {
80effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  return device != 0 && device == bound_graphics_.get();
81effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
82effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
83effb81e5f8246d0db0270817048dc992db66e9fbBen MurdochPP_Bool PluginInstance::BindGraphics(PP_Instance instance, PP_Resource device) {
84effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  if (bound_graphics_.get() == device)
85effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch    return PP_TRUE;
86effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
87effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  ppapi::thunk::EnterResourceNoLock<ppapi::thunk::PPB_Graphics3D_API>
88effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch      enter(device, false);
89effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  if (enter.failed())
90effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch    return PP_FALSE;
91effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
92effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  bound_graphics_ = device;
93effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  static_cast<Graphics3DResource*>(enter.object())->BindGraphics();
94effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
95effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  return PP_TRUE;
96effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
97effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
98effb81e5f8246d0db0270817048dc992db66e9fbBen MurdochPP_Bool PluginInstance::IsFullFrame(PP_Instance instance) {
99effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  NOTIMPLEMENTED();
100effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  return PP_FALSE;
101effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
102effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
103effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochconst ppapi::ViewData* PluginInstance::GetViewData(PP_Instance instance) {
104effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  NOTIMPLEMENTED();
105effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  return NULL;
106effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
107effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
108effb81e5f8246d0db0270817048dc992db66e9fbBen MurdochPP_Bool PluginInstance::FlashIsFullscreen(PP_Instance instance) {
109effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  NOTIMPLEMENTED();
110effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  return PP_FALSE;
111effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
112effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
113effb81e5f8246d0db0270817048dc992db66e9fbBen MurdochPP_Var PluginInstance::GetWindowObject(PP_Instance instance) {
114effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  NOTIMPLEMENTED();
115effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  return PP_MakeUndefined();
116effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
117effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
118effb81e5f8246d0db0270817048dc992db66e9fbBen MurdochPP_Var PluginInstance::GetOwnerElementObject(PP_Instance instance) {
119effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  NOTIMPLEMENTED();
120effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  return PP_MakeUndefined();
121effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
122effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
123effb81e5f8246d0db0270817048dc992db66e9fbBen MurdochPP_Var PluginInstance::ExecuteScript(PP_Instance instance,
124effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch                                     PP_Var script,
125effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch                                     PP_Var* exception) {
126effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  NOTIMPLEMENTED();
127effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  return PP_MakeUndefined();
128effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
129effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
130effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochuint32_t PluginInstance::GetAudioHardwareOutputSampleRate(
131effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch    PP_Instance instance) {
132effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  NOTIMPLEMENTED();
133effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  return 0;
134effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
135effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
136effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochuint32_t PluginInstance::GetAudioHardwareOutputBufferSize(
137effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch    PP_Instance instance) {
138effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  NOTIMPLEMENTED();
139effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  return 0;
140effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
141effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
142effb81e5f8246d0db0270817048dc992db66e9fbBen MurdochPP_Var PluginInstance::GetDefaultCharSet(PP_Instance instance) {
143effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  NOTIMPLEMENTED();
144effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  return PP_MakeUndefined();
145effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
146effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
147effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochvoid PluginInstance::Log(PP_Instance instance,
148effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch                         PP_LogLevel log_level,
149effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch                         PP_Var value) {
150effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  NOTIMPLEMENTED();
151effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
152effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
153effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochvoid PluginInstance::LogWithSource(PP_Instance instance,
154effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch                                   PP_LogLevel log_level,
155effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch                                   PP_Var source,
156effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch                                   PP_Var value) {
157effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  NOTIMPLEMENTED();
158effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
159effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
160effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochvoid PluginInstance::SetPluginToHandleFindRequests(PP_Instance instance) {
161effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  NOTIMPLEMENTED();
162effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
163effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
164effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochvoid PluginInstance::NumberOfFindResultsChanged(PP_Instance instance,
165effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch                                                int32_t total,
166effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch                                                PP_Bool final_result) {
167effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  NOTIMPLEMENTED();
168effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
169effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
170effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochvoid PluginInstance::SelectedFindResultChanged(PP_Instance instance,
171effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch                                               int32_t index) {
172effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  NOTIMPLEMENTED();
173effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
174effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
175effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochvoid PluginInstance::SetTickmarks(PP_Instance instance,
176effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch                                  const PP_Rect* tickmarks,
177effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch                                  uint32_t count) {
178effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  NOTIMPLEMENTED();
179effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
180effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
181effb81e5f8246d0db0270817048dc992db66e9fbBen MurdochPP_Bool PluginInstance::IsFullscreen(PP_Instance instance) {
182effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  NOTIMPLEMENTED();
183effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  return PP_FALSE;
184effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
185effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
186effb81e5f8246d0db0270817048dc992db66e9fbBen MurdochPP_Bool PluginInstance::SetFullscreen(PP_Instance instance,
187effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch                                      PP_Bool fullscreen) {
188effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  NOTIMPLEMENTED();
189effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  return PP_FALSE;
190effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
191effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
192effb81e5f8246d0db0270817048dc992db66e9fbBen MurdochPP_Bool PluginInstance::GetScreenSize(PP_Instance instance, PP_Size* size) {
193effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  NOTIMPLEMENTED();
194effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  return PP_FALSE;
195effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
196effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
197effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochppapi::Resource* PluginInstance::GetSingletonResource(
198effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch    PP_Instance instance,
199effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch    ppapi::SingletonResourceID id) {
200effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  NOTIMPLEMENTED();
201effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  return NULL;
202effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
203effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
204effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochint32_t PluginInstance::RequestInputEvents(PP_Instance instance,
205effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch                                           uint32_t event_classes) {
206effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  NOTIMPLEMENTED();
207effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  return PP_ERROR_FAILED;
208effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
209effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
210effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochint32_t PluginInstance::RequestFilteringInputEvents(PP_Instance instance,
211effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch                                                    uint32_t event_classes) {
212effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  NOTIMPLEMENTED();
213effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  return PP_ERROR_FAILED;
214effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
215effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
216effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochvoid PluginInstance::ClearInputEventRequest(PP_Instance instance,
217effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch                                            uint32_t event_classes) {
218cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  NOTIMPLEMENTED();
219cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}
220cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
221cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)void PluginInstance::StartTrackingLatency(PP_Instance instance) {
222effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  NOTIMPLEMENTED();
223effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
224effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
225effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochvoid PluginInstance::PostMessage(PP_Instance instance, PP_Var message) {
226effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  NOTIMPLEMENTED();
227effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
228effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
22946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)int32_t PluginInstance::RegisterMessageHandler(
23046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    PP_Instance instance,
23146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    void* user_data,
2321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    const PPP_MessageHandler_0_2* handler,
2331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    PP_Resource message_loop) {
2341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  NOTIMPLEMENTED();
2351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  return PP_ERROR_FAILED;
2361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
2371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
2381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// TODO(dmichael): Remove this. crbug.com/414398
2391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciint32_t PluginInstance::RegisterMessageHandler_1_1_Deprecated(
2401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    PP_Instance instance,
2411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    void* user_data,
2421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    const PPP_MessageHandler_0_1_Deprecated* handler,
24346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    PP_Resource message_loop) {
24446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  NOTIMPLEMENTED();
24546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  return PP_ERROR_FAILED;
24646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)}
24746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
24846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)void PluginInstance::UnregisterMessageHandler(PP_Instance instance) {
24946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  NOTIMPLEMENTED();
25046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)}
25146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
252effb81e5f8246d0db0270817048dc992db66e9fbBen MurdochPP_Bool PluginInstance::SetCursor(PP_Instance instance,
253effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch                                  PP_MouseCursor_Type type,
254effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch                                  PP_Resource image,
255effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch                                  const PP_Point* hot_spot) {
256effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  NOTIMPLEMENTED();
257effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  return PP_FALSE;
258effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
259effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
260effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochint32_t PluginInstance::LockMouse(
261effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch    PP_Instance instance,
262effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch    scoped_refptr<ppapi::TrackedCallback> callback) {
263effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  NOTIMPLEMENTED();
264effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  return PP_ERROR_FAILED;
265effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
266effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
267effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochvoid PluginInstance::UnlockMouse(PP_Instance instance) {
268effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  NOTIMPLEMENTED();
269effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
270effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
271effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochvoid PluginInstance::SetTextInputType(PP_Instance instance,
272effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch                                      PP_TextInput_Type type) {
273effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  NOTIMPLEMENTED();
274effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
275effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
276effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochvoid PluginInstance::UpdateCaretPosition(PP_Instance instance,
277effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch                                         const PP_Rect& caret,
278effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch                                         const PP_Rect& bounding_box) {
279effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  NOTIMPLEMENTED();
280effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
281effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
282effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochvoid PluginInstance::CancelCompositionText(PP_Instance instance) {
283effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  NOTIMPLEMENTED();
284effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
285effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
286effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochvoid PluginInstance::SelectionChanged(PP_Instance instance) {
287effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  NOTIMPLEMENTED();
288effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
289effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
290effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochvoid PluginInstance::UpdateSurroundingText(PP_Instance instance,
291effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch                                           const char* text,
292effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch                                           uint32_t caret,
293effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch                                           uint32_t anchor) {
294effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  NOTIMPLEMENTED();
295effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
296effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
297effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochvoid PluginInstance::ZoomChanged(PP_Instance instance, double factor) {
298effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  NOTIMPLEMENTED();
299effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
300effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
301effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochvoid PluginInstance::ZoomLimitsChanged(PP_Instance instance,
302effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch                                       double minimum_factor,
303effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch                                       double maximum_factor) {
304effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  NOTIMPLEMENTED();
305effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
306effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
307effb81e5f8246d0db0270817048dc992db66e9fbBen MurdochPP_Var PluginInstance::GetDocumentURL(PP_Instance instance,
308effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch                                      PP_URLComponents_Dev* components) {
309effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  NOTIMPLEMENTED();
310effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  return PP_MakeUndefined();
311effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
312effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
313f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)void PluginInstance::PromiseResolved(PP_Instance instance, uint32 promise_id) {
314f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  NOTIMPLEMENTED();
315f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)}
316f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
317f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)void PluginInstance::PromiseResolvedWithSession(PP_Instance instance,
318f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                                                uint32 promise_id,
319f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                                                PP_Var web_session_id_var) {
320f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  NOTIMPLEMENTED();
321f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)}
322f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
3231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid PluginInstance::PromiseResolvedWithKeyIds(PP_Instance instance,
3241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                               uint32 promise_id,
3251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                               PP_Var key_ids_var) {
3261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  NOTIMPLEMENTED();
3271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
3281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
329f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)void PluginInstance::PromiseRejected(PP_Instance instance,
330f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                                     uint32 promise_id,
331f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                                     PP_CdmExceptionCode exception_code,
332f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                                     uint32 system_code,
333f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                                     PP_Var error_description_var) {
334effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  NOTIMPLEMENTED();
335effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
336effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
337effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochvoid PluginInstance::SessionMessage(PP_Instance instance,
338f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                                    PP_Var web_session_id_var,
339f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                                    PP_Var message_var,
340f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                                    PP_Var destination_url_var) {
341effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  NOTIMPLEMENTED();
342effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
343effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
3441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid PluginInstance::SessionKeysChange(PP_Instance instance,
3451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                       PP_Var web_session_id_var,
3461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                       PP_Bool has_additional_usable_key) {
3471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  NOTIMPLEMENTED();
3481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
3491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
3501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid PluginInstance::SessionExpirationChange(PP_Instance instance,
3511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                             PP_Var web_session_id_var,
3521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                             PP_Time new_expiry_time) {
3531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  NOTIMPLEMENTED();
3541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
3551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
356f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)void PluginInstance::SessionReady(PP_Instance instance,
357f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                                  PP_Var web_session_id_var) {
358effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  NOTIMPLEMENTED();
359effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
360effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
361f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)void PluginInstance::SessionClosed(PP_Instance instance,
362f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                                   PP_Var web_session_id_var) {
363effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  NOTIMPLEMENTED();
364effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
365effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
366effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochvoid PluginInstance::SessionError(PP_Instance instance,
367f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                                  PP_Var web_session_id_var,
368f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                                  PP_CdmExceptionCode exception_code,
369f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                                  uint32 system_code,
370f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                                  PP_Var error_description_var) {
371effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  NOTIMPLEMENTED();
372effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
373effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
374effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochvoid PluginInstance::DeliverBlock(PP_Instance instance,
375effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch                                  PP_Resource decrypted_block,
376effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch                                  const PP_DecryptedBlockInfo* block_info) {
377effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  NOTIMPLEMENTED();
378effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
379effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
380effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochvoid PluginInstance::DecoderInitializeDone(PP_Instance instance,
381effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch                                           PP_DecryptorStreamType decoder_type,
382effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch                                           uint32_t request_id,
383effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch                                           PP_Bool success) {
384effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  NOTIMPLEMENTED();
385effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
386effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
387effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochvoid PluginInstance::DecoderDeinitializeDone(
388effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch    PP_Instance instance,
389effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch    PP_DecryptorStreamType decoder_type,
390effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch    uint32_t request_id) {
391effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  NOTIMPLEMENTED();
392effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
393effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
394effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochvoid PluginInstance::DecoderResetDone(PP_Instance instance,
395effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch                                      PP_DecryptorStreamType decoder_type,
396effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch                                      uint32_t request_id) {
397effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  NOTIMPLEMENTED();
398effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
399effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
400effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochvoid PluginInstance::DeliverFrame(PP_Instance instance,
401effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch                                  PP_Resource decrypted_frame,
402effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch                                  const PP_DecryptedFrameInfo* frame_info) {
403effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  NOTIMPLEMENTED();
404effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
405effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
406effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochvoid PluginInstance::DeliverSamples(PP_Instance instance,
407effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch                                    PP_Resource audio_frames,
408effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch                                    const PP_DecryptedSampleInfo* sample_info) {
409effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  NOTIMPLEMENTED();
410effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
411effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
412effb81e5f8246d0db0270817048dc992db66e9fbBen MurdochPP_Var PluginInstance::ResolveRelativeToDocument(
413effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch    PP_Instance instance,
414effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch    PP_Var relative,
415effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch    PP_URLComponents_Dev* components) {
416effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  NOTIMPLEMENTED();
417effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  return PP_MakeUndefined();
418effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
419effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
420effb81e5f8246d0db0270817048dc992db66e9fbBen MurdochPP_Bool PluginInstance::DocumentCanRequest(PP_Instance instance, PP_Var url) {
421effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  NOTIMPLEMENTED();
422effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  return PP_FALSE;
423effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
424effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
425effb81e5f8246d0db0270817048dc992db66e9fbBen MurdochPP_Bool PluginInstance::DocumentCanAccessDocument(PP_Instance instance,
426effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch                                                  PP_Instance target) {
427effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  NOTIMPLEMENTED();
428effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  return PP_FALSE;
429effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
430effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
431effb81e5f8246d0db0270817048dc992db66e9fbBen MurdochPP_Var PluginInstance::GetPluginInstanceURL(PP_Instance instance,
432effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch                                            PP_URLComponents_Dev* components) {
433effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  NOTIMPLEMENTED();
434effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  return PP_MakeUndefined();
435effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
436effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
437effb81e5f8246d0db0270817048dc992db66e9fbBen MurdochPP_Var PluginInstance::GetPluginReferrerURL(PP_Instance instance,
438effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch                                            PP_URLComponents_Dev* components) {
439effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  NOTIMPLEMENTED();
440effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  return PP_MakeUndefined();
441effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
442effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
443effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}  // namespace examples
444effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}  // namespace mojo
445