1 // Copyright (c) 2011 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 #ifndef CONTENT_TEST_PLUGIN_PLUGIN_GETURL_TEST_H_ 6 #define CONTENT_TEST_PLUGIN_PLUGIN_GETURL_TEST_H_ 7 8 #include <stdio.h> 9 10 #include "base/compiler_specific.h" 11 #include "content/test/plugin/plugin_test.h" 12 13 namespace NPAPIClient { 14 15 // The PluginGetURLTest test functionality of the NPN_GetURL 16 // and NPN_GetURLNotify methods. 17 // 18 // This test first discovers it's URL by sending a GetURL request 19 // for 'javascript:top.location'. After receiving that, the 20 // test will request the url itself (again via GetURL). 21 class PluginGetURLTest : public PluginTest { 22 public: 23 // Constructor. 24 PluginGetURLTest(NPP id, NPNetscapeFuncs *host_functions); 25 virtual ~PluginGetURLTest(); 26 27 // 28 // NPAPI functions 29 // 30 virtual NPError New(uint16 mode, int16 argc, const char* argn[], 31 const char* argv[], NPSavedData* saved) OVERRIDE; 32 virtual NPError SetWindow(NPWindow* pNPWindow) OVERRIDE; 33 virtual NPError NewStream(NPMIMEType type, NPStream* stream, 34 NPBool seekable, uint16* stype) OVERRIDE; 35 virtual int32 WriteReady(NPStream *stream) OVERRIDE; 36 virtual int32 Write(NPStream *stream, int32 offset, int32 len, 37 void *buffer) OVERRIDE; 38 virtual NPError DestroyStream(NPStream *stream, NPError reason) OVERRIDE; 39 virtual void StreamAsFile(NPStream* stream, const char* fname) OVERRIDE; 40 virtual void URLNotify(const char* url, NPReason reason, 41 void* data) OVERRIDE; 42 virtual void URLRedirectNotify(const char* url, int32_t status, 43 void* notify_data) OVERRIDE; 44 45 private: 46 bool tests_started_; 47 int tests_in_progress_; 48 std::string self_url_; 49 FILE* test_file_; 50 bool expect_404_response_; 51 // This flag is set to true in the context of the NPN_Evaluate call. 52 bool npn_evaluate_context_; 53 // The following two flags handle URL redirect notifications received by 54 // plugins. 55 bool handle_url_redirects_; 56 bool received_url_redirect_notification_; 57 std::string page_not_found_url_; 58 std::string fail_write_url_; 59 std::string referrer_target_url_; 60 }; 61 62 } // namespace NPAPIClient 63 64 #endif // CONTENT_TEST_PLUGIN_PLUGIN_GETURL_TEST_H_ 65