Home | History | Annotate | Download | only in Tests
      1 // Copyright 2014 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 /*
      6  * Copyright (C) 2012 Apple Inc. All rights reserved.
      7  *
      8  * Redistribution and use in source and binary forms, with or without
      9  * modification, are permitted provided that the following conditions
     10  * are met:
     11  * 1. Redistributions of source code must retain the above copyright
     12  *    notice, this list of conditions and the following disclaimer.
     13  * 2. Redistributions in binary form must reproduce the above copyright
     14  *    notice, this list of conditions and the following disclaimer in the
     15  *    documentation and/or other materials provided with the distribution.
     16  *
     17  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
     18  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
     19  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     20  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
     21  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     22  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     23  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     24  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
     25  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     26  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
     27  * THE POSSIBILITY OF SUCH DAMAGE.
     28  */
     29 
     30 #include "PluginTest.h"
     31 
     32 class NPRuntimeCallsWithNullNPP : public PluginTest {
     33 public:
     34     NPRuntimeCallsWithNullNPP(NPP npp, const std::string& identifier)
     35         : PluginTest(npp, identifier)
     36     {
     37     }
     38 
     39 private:
     40  virtual NPError NPP_New(NPMIMEType pluginType,
     41                          uint16_t mode,
     42                          int16_t argc,
     43                          char* argn[],
     44                          char* argv[],
     45                          NPSavedData* saved) OVERRIDE {
     46         NPObject* windowObject = 0;
     47         if (NPN_GetValue(NPNVWindowNPObject, &windowObject) != NPERR_NO_ERROR || !windowObject)
     48             return NPERR_GENERIC_ERROR;
     49 
     50         NPIdentifier alertIdentifier = NPN_GetStringIdentifier("alert");
     51         if (!PluginTest::netscapeFuncs()->hasmethod(0, windowObject, alertIdentifier)) {
     52             NPN_ReleaseObject(windowObject);
     53             return NPERR_GENERIC_ERROR;
     54         }
     55 
     56         NPIdentifier documentIdentifier = NPN_GetStringIdentifier("document");
     57         NPVariant variant;
     58         if (!PluginTest::netscapeFuncs()->getproperty(0, windowObject, documentIdentifier, &variant)) {
     59             NPN_ReleaseObject(windowObject);
     60             return NPERR_GENERIC_ERROR;
     61         }
     62         NPN_ReleaseVariantValue(&variant);
     63 
     64         NPN_ReleaseObject(windowObject);
     65 
     66         executeScript("document.getElementById('result').innerHTML = 'SUCCESS!'");
     67         notifyDone();
     68         return NPERR_NO_ERROR;
     69     }
     70 };
     71 
     72 static PluginTest::Register<NPRuntimeCallsWithNullNPP> npRuntimeCallsWithNullNPP("npruntime-calls-with-null-npp");
     73 
     74 
     75