• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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) 2011 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 #include <string.h>
33 
34 using namespace std;
35 
36 // From NPP_New, call NPN_GetURLNotify with a URL that fails to load (NPP_NewStream won't be called).
37 // The plug-in should still get a NPP_URLNotify indicating that the load failed.
38 static const char *urlThatFailsToLoad = "foo://bar/";
39 
40 class GetURLNotifyWithURLThatFailsToLoad : public PluginTest {
41 public:
GetURLNotifyWithURLThatFailsToLoad(NPP npp,const string & identifier)42     GetURLNotifyWithURLThatFailsToLoad(NPP npp, const string& identifier)
43         : PluginTest(npp, identifier)
44     {
45     }
46 
47 private:
NPP_New(NPMIMEType pluginType,uint16_t mode,int16_t argc,char * argn[],char * argv[],NPSavedData * saved)48  virtual NPError NPP_New(NPMIMEType pluginType,
49                          uint16_t mode,
50                          int16_t argc,
51                          char* argn[],
52                          char* argv[],
53                          NPSavedData* saved) OVERRIDE {
54         NPN_GetURLNotify(urlThatFailsToLoad, 0, reinterpret_cast<void*>(0x12345678));
55         return NPERR_NO_ERROR;
56     }
57 
NPP_URLNotify(const char * url,NPReason reason,void * notifyData)58     virtual bool NPP_URLNotify(const char* url, NPReason reason, void* notifyData) OVERRIDE
59     {
60         bool didFail = false;
61 
62         if (strcmp(url, urlThatFailsToLoad))
63             didFail = true;
64 
65         if (reason != NPRES_NETWORK_ERR)
66             didFail = true;
67 
68         if (notifyData != reinterpret_cast<void*>(0x12345678))
69             didFail = true;
70 
71         if (!didFail)
72             executeScript("testSucceeded()");
73         else
74             executeScript("notifyDone()");
75         return true;
76     }
77 };
78 
79 static PluginTest::Register<GetURLNotifyWithURLThatFailsToLoad> getURLWithJavaScriptURLDestroyingPlugin("get-url-notify-with-url-that-fails-to-load");
80