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.
5 #include "content/test/plugin/plugin_execute_stream_javascript.h"
7 #include "base/basictypes.h"
8 #include "content/test/plugin/plugin_client.h"
10 namespace NPAPIClient
{
12 static const int kMaxLength
= 4096;
14 ExecuteStreamJavaScript::ExecuteStreamJavaScript(
15 NPP id
, NPNetscapeFuncs
*host_functions
)
16 : PluginTest(id
, host_functions
) {
19 NPError
ExecuteStreamJavaScript::NewStream(NPMIMEType type
, NPStream
* stream
,
20 NPBool seekable
, uint16
* stype
) {
21 return NPERR_NO_ERROR
;
24 int32
ExecuteStreamJavaScript::WriteReady(NPStream
*stream
) {
28 int32
ExecuteStreamJavaScript::Write(NPStream
*stream
, int32 offset
, int32 len
,
31 SetError("Write got null stream");
34 if (len
< 0 || len
> kMaxLength
) {
35 SetError("Write got bogus stream chunk size");
39 std::string
javascript("javascript:");
40 javascript
.append(static_cast<char*>(buffer
), len
);
41 size_t js_length
= javascript
.length();
42 if (js_length
!= static_cast<uint32_t>(js_length
)) {
43 SetError("Javascript too long.");
47 NPString script_string
= { javascript
.c_str(),
48 static_cast<uint32_t>(js_length
) };
49 NPObject
*window_obj
= NULL
;
50 NPAPIClient::PluginClient::HostFunctions()->getvalue(
51 id(), NPNVWindowNPObject
, &window_obj
);
53 NPVariant unused_result
;
54 NPAPIClient::PluginClient::HostFunctions()->evaluate(
55 id(), window_obj
, &script_string
, &unused_result
);
60 NPError
ExecuteStreamJavaScript::DestroyStream(NPStream
*stream
,
62 return NPERR_NO_ERROR
;
65 } // namespace NPAPIClient