1 // Copyright (c) 2010 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 "content/test/plugin/plugin_private_test.h"
6
7 #include "base/basictypes.h"
8 #include "base/strings/string_util.h"
9 #include "content/test/plugin/plugin_client.h"
10
11 namespace NPAPIClient {
12
PrivateTest(NPP id,NPNetscapeFuncs * host_functions)13 PrivateTest::PrivateTest(NPP id, NPNetscapeFuncs *host_functions)
14 : PluginTest(id, host_functions) {
15 }
16
New(uint16 mode,int16 argc,const char * argn[],const char * argv[],NPSavedData * saved)17 NPError PrivateTest::New(uint16 mode, int16 argc,
18 const char* argn[], const char* argv[],
19 NPSavedData* saved) {
20 PluginTest::New(mode, argc, argn, argv, saved);
21
22 NPBool private_mode = 0;
23 NPNetscapeFuncs* browser = NPAPIClient::PluginClient::HostFunctions();
24 NPError result = browser->getvalue(
25 id(), NPNVprivateModeBool, &private_mode);
26 if (result != NPERR_NO_ERROR) {
27 SetError("Failed to read NPNVprivateModeBool value.");
28 } else {
29 NPIdentifier location = HostFunctions()->getstringidentifier("location");
30 NPIdentifier href = HostFunctions()->getstringidentifier("href");
31
32 NPObject *window_obj = NULL;
33 HostFunctions()->getvalue(id(), NPNVWindowNPObject, &window_obj);
34
35 NPVariant location_var;
36 HostFunctions()->getproperty(id(), window_obj, location, &location_var);
37
38 NPVariant href_var;
39 HostFunctions()->getproperty(id(), NPVARIANT_TO_OBJECT(location_var), href,
40 &href_var);
41 std::string href_str(href_var.value.stringValue.UTF8Characters,
42 href_var.value.stringValue.UTF8Length);
43 bool private_expected = href_str.find("?private") != href_str.npos;
44 if (private_mode != static_cast<NPBool>(private_expected))
45 SetError("NPNVprivateModeBool returned incorrect value.");
46
47 HostFunctions()->releasevariantvalue(&href_var);
48 HostFunctions()->releasevariantvalue(&location_var);
49 HostFunctions()->releaseobject(window_obj);
50 }
51
52 SignalTestCompleted();
53
54 return NPERR_NO_ERROR;
55 }
56
57 } // namespace NPAPIClient
58