diff options
author | tyoshino@chromium.org <tyoshino@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-01-08 03:38:29 +0000 |
---|---|---|
committer | tyoshino@chromium.org <tyoshino@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-01-08 03:38:29 +0000 |
commit | 3ffe71e020ea8e3597c2835f1ba0ebb8fb85ab9e (patch) | |
tree | fe9ac76dc74f86b0b9fbe803488ac1a9276e26f5 /chrome_frame | |
parent | d5a49e5ad3e6eb962cc026c9fd5c945f89ea9b0c (diff) | |
download | chromium_src-3ffe71e020ea8e3597c2835f1ba0ebb8fb85ab9e.zip chromium_src-3ffe71e020ea8e3597c2835f1ba0ebb8fb85ab9e.tar.gz chromium_src-3ffe71e020ea8e3597c2835f1ba0ebb8fb85ab9e.tar.bz2 |
Reason:
Linux Builder (ChromiumOS) failed.
http://chrome-buildbot.corp.google.com:8010/builders/Linux%20Builder%20(ChromiumOS)/builds/2050/steps/compile/logs/stdio
Please add changes to external_cookie_handler_unittest.cc no to break compilation
and reland?
----
Revert 35769 - Deleting cookies by setting the expires attribute on them with an empty value would not work in ChromeFrame
with the host network stack enabled. When we receive a response in the host browser (IE) we send over the
response headers which include the SetCookie header and a list of cookies retreived via the InternetGetCookie
API. We call this API to retrieve the persistent cookies and send them over to Chrome.
However this API returns session cookies as well as persistent cookies. There is no documented way to return
only persistent cookies from IE. As a result we would end up setting duplicate cookies in Chrome, which caused
this issu.e. To workaround this issue when we receive the response in the url request automation job which
handles ChromeFrame network requests, we strip out duplicate cookies sent via InternetGetCookie.
When a script deletes a cookie we now handle it correctly in IE and set the data to an empty string. However
this does not delete the cookie. When such cookies show up in Chrome, we strip them out as well.
Fixes bug http://code.google.com/p/chromium/issues/detail?id=30786
The changes to chrome_frame_npapi.cc/.h are to move the NPAPI functions to the chrome_frame namespace as they
conflict with similar functions in NACL.
Added the DeleteCookie function to the CookieStore interface, which I think missed out by oversight.
Bug=30786
Test=Covered by ChromeFrame unit tests. I also added a unit test to test the newly added
URLRequestAutomationJob::IsCookiePresentInCookieHeader function
Review URL: http://codereview.chromium.org/518054
TBR=ananta@chromium.org
Review URL: http://codereview.chromium.org/517070
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@35771 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome_frame')
-rw-r--r-- | chrome_frame/chrome_frame.gyp | 5 | ||||
-rw-r--r-- | chrome_frame/chrome_frame_activex_base.h | 12 | ||||
-rw-r--r-- | chrome_frame/chrome_frame_npapi.cc | 150 | ||||
-rw-r--r-- | chrome_frame/chrome_frame_npapi_entrypoints.cc | 176 | ||||
-rw-r--r-- | chrome_frame/chrome_frame_npapi_entrypoints.h | 39 | ||||
-rw-r--r-- | chrome_frame/test/chrome_frame_unittests.cc | 21 | ||||
-rw-r--r-- | chrome_frame/test/data/fulltab_delete_cookie_test.html | 47 | ||||
-rw-r--r-- | chrome_frame/test/data/fulltab_delete_cookie_test.html.mock-http-headers | 3 | ||||
-rw-r--r-- | chrome_frame/test/html_util_unittests.cc | 24 |
9 files changed, 166 insertions, 311 deletions
diff --git a/chrome_frame/chrome_frame.gyp b/chrome_frame/chrome_frame.gyp index 764ec79..33f4a4a 100644 --- a/chrome_frame/chrome_frame.gyp +++ b/chrome_frame/chrome_frame.gyp @@ -108,11 +108,7 @@ 'type': 'executable', 'dependencies': [ '../build/temp_gyp/googleurl.gyp:googleurl', - '../chrome/chrome.gyp:browser', '../chrome/chrome.gyp:common', - '../chrome/chrome.gyp:debugger', - '../chrome/chrome.gyp:nacl', - '../chrome/chrome.gyp:renderer', '../chrome/chrome.gyp:utility', '../testing/gmock.gyp:gmock', '../testing/gtest.gyp:gtest', @@ -621,7 +617,6 @@ 'sources': [ 'chrome_frame_npapi.rgs', 'chrome_frame_npapi_entrypoints.cc', - 'chrome_frame_npapi_entrypoints.h', 'chrome_tab.cc', 'chrome_tab.def', 'chrome_tab.h', diff --git a/chrome_frame/chrome_frame_activex_base.h b/chrome_frame/chrome_frame_activex_base.h index a7fd6a0..077fa11 100644 --- a/chrome_frame/chrome_frame_activex_base.h +++ b/chrome_frame/chrome_frame_activex_base.h @@ -42,7 +42,6 @@ #include "chrome_frame/com_type_info_holder.h" #include "chrome_frame/urlmon_url_request.h" #include "grit/generated_resources.h" -#include "net/base/cookie_monster.h" // Include without path to make GYP build see it. #include "chrome_tab.h" // NOLINT @@ -524,17 +523,10 @@ END_MSG_MAP() const std::string& cookie) { std::string name; std::string data; - size_t name_end = cookie.find('='); if (std::string::npos != name_end) { - net::CookieMonster::ParsedCookie parsed_cookie = cookie; - name = parsed_cookie.Name(); - // Verify if the cookie is being deleted. The cookie format is as below - // value[; expires=date][; domain=domain][; path=path][; secure] - // If the first semicolon appears immediately after the name= string, - // it means that the cookie is being deleted. - if (!parsed_cookie.Value().empty()) - data = cookie.substr(name_end + 1); + name = cookie.substr(0, name_end); + data = cookie.substr(name_end + 1); } else { data = cookie; } diff --git a/chrome_frame/chrome_frame_npapi.cc b/chrome_frame/chrome_frame_npapi.cc index 2dd3145..d3e1f91 100644 --- a/chrome_frame/chrome_frame_npapi.cc +++ b/chrome_frame/chrome_frame_npapi.cc @@ -85,6 +85,8 @@ void ChromeFrameNPAPI::CompileAsserts() { you_must_add_both_plugin_property_and_name); } +static const int kMaxBytesForPluginConsumption = 0x7FFFFFFF; + static const char kPluginSrcAttribute[] = "src"; static const char kPluginForceFullPageAttribute[] = "force_full_page"; static const char kPluginOnloadAttribute[] = "onload"; @@ -109,6 +111,154 @@ static const char kPluginChromeFunctionsAutomatedAttribute[] = // If chrome network stack is to be used static const char kPluginUseChromeNetwork[] = "usechromenetwork"; + +NPError NPP_New(NPMIMEType plugin_type, NPP instance, uint16 mode, int16 argc, + char* argn[], char* argv[], NPSavedData* saved) { + if (instance == NULL) + return NPERR_INVALID_INSTANCE_ERROR; + + ChromeFrameNPAPI::ChromeFrameNPObject* chrome_frame_npapi_obj = + reinterpret_cast<ChromeFrameNPAPI::ChromeFrameNPObject*>( + npapi::CreateObject(instance, ChromeFrameNPAPI::PluginClass())); + DCHECK(chrome_frame_npapi_obj != NULL); + + ChromeFrameNPAPI* plugin_instance = + chrome_frame_npapi_obj->chrome_frame_plugin_instance; + DCHECK(plugin_instance != NULL); + + // Note that we MUST set instance->pdata BEFORE calling Initialize. This is + // because Initialize can call back into the NPAPI host which will need the + // pdata field to be set. + chrome_frame_npapi_obj->chrome_frame_plugin_instance = + plugin_instance; + instance->pdata = chrome_frame_npapi_obj; + + bool init = plugin_instance->Initialize(plugin_type, instance, + mode, argc, argn, argv); + DCHECK(init); + + return NPERR_NO_ERROR; +} + +NPError NPP_Destroy(NPP instance, NPSavedData** save) { + // Takes ownership and releases the object at the end of scope. + ScopedNpObject<ChromeFrameNPAPI::ChromeFrameNPObject> chrome_frame_npapi_obj( + reinterpret_cast<ChromeFrameNPAPI::ChromeFrameNPObject*>( + instance->pdata)); + + if (chrome_frame_npapi_obj.get()) { + ChromeFrameNPAPI* plugin_instance = + ChromeFrameNPAPI::ChromeFrameInstanceFromPluginInstance(instance); + + plugin_instance->Uninitialize(); + instance->pdata = NULL; + } + + return NPERR_NO_ERROR; +} + +NPError NPP_SetWindow(NPP instance, NPWindow* window_info) { + if (window_info == NULL) { + NOTREACHED(); + return NPERR_GENERIC_ERROR; + } + + ChromeFrameNPAPI* plugin_instance = + ChromeFrameNPAPI::ChromeFrameInstanceFromPluginInstance(instance); + + if (plugin_instance == NULL) { + return NPERR_INVALID_INSTANCE_ERROR; + } + + plugin_instance->SetWindow(window_info); + return NPERR_NO_ERROR; +} + +NPError NPP_NewStream(NPP instance, NPMIMEType type, NPStream* stream, + NPBool seekable, uint16* stream_type) { + NPAPIUrlRequest* url_request = ChromeFrameNPAPI::ValidateRequest( + instance, stream->notifyData); + if (url_request) { + if (!url_request->OnStreamCreated(type, stream)) + return NPERR_GENERIC_ERROR; + } + + // We need to return the requested stream mode if we are returning a success + // code. If we don't do this it causes Opera to blow up. + *stream_type = NP_NORMAL; + return NPERR_NO_ERROR; +} + +NPError NPP_DestroyStream(NPP instance, NPStream* stream, NPReason reason) { + NPAPIUrlRequest* url_request = ChromeFrameNPAPI::ValidateRequest( + instance, stream->notifyData); + if (url_request) { + url_request->OnStreamDestroyed(reason); + } + + return NPERR_NO_ERROR; +} + +NPError NPP_GetValue(NPP instance, NPPVariable variable, void* value) { + if (variable == NPPVpluginScriptableNPObject) { + void** plugin = reinterpret_cast<void**>(value); + ChromeFrameNPAPI::ChromeFrameNPObject* chrome_frame_npapi_obj = + reinterpret_cast<ChromeFrameNPAPI::ChromeFrameNPObject*>( + instance->pdata); + // Return value is expected to be retained + npapi::RetainObject(reinterpret_cast<NPObject*>(chrome_frame_npapi_obj)); + *plugin = chrome_frame_npapi_obj; + return NPERR_NO_ERROR; + } + return NPERR_GENERIC_ERROR; +} + +NPError NPP_SetValue(NPP instance, NPNVariable variable, void* value) { + return NPERR_GENERIC_ERROR; +} + +int32 NPP_WriteReady(NPP instance, NPStream* stream) { + NPAPIUrlRequest* url_request = ChromeFrameNPAPI::ValidateRequest( + instance, stream->notifyData); + if (url_request) { + return url_request->OnWriteReady(); + } + + return kMaxBytesForPluginConsumption; +} + +int32 NPP_Write(NPP instance, NPStream* stream, int32 offset, int32 len, + void* buffer) { + NPAPIUrlRequest* url_request = ChromeFrameNPAPI::ValidateRequest( + instance, stream->notifyData); + if (url_request) { + return url_request->OnWrite(buffer, len); + } + + return len; +} + +void NPP_URLNotify(NPP instance, const char* url, NPReason reason, + void* notifyData) { + ChromeFrameNPAPI* plugin_instance = + ChromeFrameNPAPI::ChromeFrameInstanceFromPluginInstance(instance); + if (plugin_instance) { + plugin_instance->UrlNotify(url, reason, notifyData); + } +} + +void NPP_Print(NPP instance, NPPrint* print_info) { + ChromeFrameNPAPI* plugin_instance = + ChromeFrameNPAPI::ChromeFrameInstanceFromPluginInstance(instance); + + if (plugin_instance == NULL) { + NOTREACHED(); + return; + } + + plugin_instance->Print(print_info); +} + // ChromeFrameNPAPI member defines. // TODO(tommi): remove ignore_setfocus_ since that's not how focus is diff --git a/chrome_frame/chrome_frame_npapi_entrypoints.cc b/chrome_frame/chrome_frame_npapi_entrypoints.cc index 17a0953..f1eec1c 100644 --- a/chrome_frame/chrome_frame_npapi_entrypoints.cc +++ b/chrome_frame/chrome_frame_npapi_entrypoints.cc @@ -2,7 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome_frame/chrome_frame_npapi_entrypoints.h" #include "chrome_frame/chrome_frame_npapi.h" #define NPAPI WINAPI @@ -24,19 +23,19 @@ NPError NPAPI NP_Initialize(NPNetscapeFuncs* browser_funcs) { NPError NPAPI NP_GetEntryPoints(NPPluginFuncs* plugin_funcs) { plugin_funcs->version = (NP_VERSION_MAJOR << 8) | NP_VERSION_MINOR; plugin_funcs->size = sizeof(plugin_funcs); - plugin_funcs->newp = chrome_frame::NPP_New; - plugin_funcs->destroy = chrome_frame::NPP_Destroy; - plugin_funcs->setwindow = chrome_frame::NPP_SetWindow; - plugin_funcs->newstream = chrome_frame::NPP_NewStream; - plugin_funcs->destroystream = chrome_frame::NPP_DestroyStream; + plugin_funcs->newp = NPP_New; + plugin_funcs->destroy = NPP_Destroy; + plugin_funcs->setwindow = NPP_SetWindow; + plugin_funcs->newstream = NPP_NewStream; + plugin_funcs->destroystream = NPP_DestroyStream; plugin_funcs->asfile = NULL; - plugin_funcs->writeready = chrome_frame::NPP_WriteReady; - plugin_funcs->write = chrome_frame::NPP_Write; - plugin_funcs->print = chrome_frame::NPP_Print; + plugin_funcs->writeready = NPP_WriteReady; + plugin_funcs->write = NPP_Write; + plugin_funcs->print = NPP_Print; plugin_funcs->event = NULL; - plugin_funcs->urlnotify = chrome_frame::NPP_URLNotify; - plugin_funcs->getvalue = chrome_frame::NPP_GetValue; - plugin_funcs->setvalue = chrome_frame::NPP_SetValue; + plugin_funcs->urlnotify = NPP_URLNotify; + plugin_funcs->getvalue = NPP_GetValue; + plugin_funcs->setvalue = NPP_SetValue; return NPERR_NO_ERROR; } @@ -52,156 +51,3 @@ void NPAPI NP_Shutdown() { << " living objects"; } - -namespace chrome_frame { - -NPError NPP_New(NPMIMEType plugin_type, NPP instance, uint16 mode, int16 argc, - char* argn[], char* argv[], NPSavedData* saved) { - if (instance == NULL) - return NPERR_INVALID_INSTANCE_ERROR; - - ChromeFrameNPAPI::ChromeFrameNPObject* chrome_frame_npapi_obj = - reinterpret_cast<ChromeFrameNPAPI::ChromeFrameNPObject*>( - npapi::CreateObject(instance, ChromeFrameNPAPI::PluginClass())); - DCHECK(chrome_frame_npapi_obj != NULL); - - ChromeFrameNPAPI* plugin_instance = - chrome_frame_npapi_obj->chrome_frame_plugin_instance; - DCHECK(plugin_instance != NULL); - - // Note that we MUST set instance->pdata BEFORE calling Initialize. This is - // because Initialize can call back into the NPAPI host which will need the - // pdata field to be set. - chrome_frame_npapi_obj->chrome_frame_plugin_instance = - plugin_instance; - instance->pdata = chrome_frame_npapi_obj; - - bool init = plugin_instance->Initialize(plugin_type, instance, - mode, argc, argn, argv); - DCHECK(init); - - return NPERR_NO_ERROR; -} - -NPError NPP_Destroy(NPP instance, NPSavedData** save) { - // Takes ownership and releases the object at the end of scope. - ScopedNpObject<ChromeFrameNPAPI::ChromeFrameNPObject> chrome_frame_npapi_obj( - reinterpret_cast<ChromeFrameNPAPI::ChromeFrameNPObject*>( - instance->pdata)); - - if (chrome_frame_npapi_obj.get()) { - ChromeFrameNPAPI* plugin_instance = - ChromeFrameNPAPI::ChromeFrameInstanceFromPluginInstance(instance); - - plugin_instance->Uninitialize(); - instance->pdata = NULL; - } - - return NPERR_NO_ERROR; -} - -NPError NPP_SetWindow(NPP instance, NPWindow* window_info) { - if (window_info == NULL) { - NOTREACHED(); - return NPERR_GENERIC_ERROR; - } - - ChromeFrameNPAPI* plugin_instance = - ChromeFrameNPAPI::ChromeFrameInstanceFromPluginInstance(instance); - - if (plugin_instance == NULL) { - return NPERR_INVALID_INSTANCE_ERROR; - } - - plugin_instance->SetWindow(window_info); - return NPERR_NO_ERROR; -} - -NPError NPP_NewStream(NPP instance, NPMIMEType type, NPStream* stream, - NPBool seekable, uint16* stream_type) { - NPAPIUrlRequest* url_request = ChromeFrameNPAPI::ValidateRequest( - instance, stream->notifyData); - if (url_request) { - if (!url_request->OnStreamCreated(type, stream)) - return NPERR_GENERIC_ERROR; - } - - // We need to return the requested stream mode if we are returning a success - // code. If we don't do this it causes Opera to blow up. - *stream_type = NP_NORMAL; - return NPERR_NO_ERROR; -} - -NPError NPP_DestroyStream(NPP instance, NPStream* stream, NPReason reason) { - NPAPIUrlRequest* url_request = ChromeFrameNPAPI::ValidateRequest( - instance, stream->notifyData); - if (url_request) { - url_request->OnStreamDestroyed(reason); - } - - return NPERR_NO_ERROR; -} - -NPError NPP_GetValue(NPP instance, NPPVariable variable, void* value) { - if (variable == NPPVpluginScriptableNPObject) { - void** plugin = reinterpret_cast<void**>(value); - ChromeFrameNPAPI::ChromeFrameNPObject* chrome_frame_npapi_obj = - reinterpret_cast<ChromeFrameNPAPI::ChromeFrameNPObject*>( - instance->pdata); - // Return value is expected to be retained - npapi::RetainObject(reinterpret_cast<NPObject*>(chrome_frame_npapi_obj)); - *plugin = chrome_frame_npapi_obj; - return NPERR_NO_ERROR; - } - return NPERR_GENERIC_ERROR; -} - -NPError NPP_SetValue(NPP instance, NPNVariable variable, void* value) { - return NPERR_GENERIC_ERROR; -} - -int32 NPP_WriteReady(NPP instance, NPStream* stream) { - static const int kMaxBytesForPluginConsumption = 0x7FFFFFFF; - - NPAPIUrlRequest* url_request = ChromeFrameNPAPI::ValidateRequest( - instance, stream->notifyData); - if (url_request) { - return url_request->OnWriteReady(); - } - - return kMaxBytesForPluginConsumption; -} - -int32 NPP_Write(NPP instance, NPStream* stream, int32 offset, int32 len, - void* buffer) { - NPAPIUrlRequest* url_request = ChromeFrameNPAPI::ValidateRequest( - instance, stream->notifyData); - if (url_request) { - return url_request->OnWrite(buffer, len); - } - - return len; -} - -void NPP_URLNotify(NPP instance, const char* url, NPReason reason, - void* notifyData) { - ChromeFrameNPAPI* plugin_instance = - ChromeFrameNPAPI::ChromeFrameInstanceFromPluginInstance(instance); - if (plugin_instance) { - plugin_instance->UrlNotify(url, reason, notifyData); - } -} - -void NPP_Print(NPP instance, NPPrint* print_info) { - ChromeFrameNPAPI* plugin_instance = - ChromeFrameNPAPI::ChromeFrameInstanceFromPluginInstance(instance); - - if (plugin_instance == NULL) { - NOTREACHED(); - return; - } - - plugin_instance->Print(print_info); -} - -} // namespace chrome_frame diff --git a/chrome_frame/chrome_frame_npapi_entrypoints.h b/chrome_frame/chrome_frame_npapi_entrypoints.h deleted file mode 100644 index 00b34fd..0000000 --- a/chrome_frame/chrome_frame_npapi_entrypoints.h +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright (c) 2009 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CHROME_FRAME_CHROME_FRAME_NPAPI_ENTRYPOINTS_H_ -#define CHROME_FRAME_CHROME_FRAME_NPAPI_ENTRYPOINTS_H_ - -#include "chrome_frame/np_browser_functions.h" - -namespace chrome_frame { - -NPError NPP_New(NPMIMEType plugin_type, NPP instance, uint16 mode, int16 argc, - char* argn[], char* argv[], NPSavedData* saved); - -NPError NPP_Destroy(NPP instance, NPSavedData** save); - -NPError NPP_SetWindow(NPP instance, NPWindow* window_info); - -NPError NPP_NewStream(NPP instance, NPMIMEType type, NPStream* stream, - NPBool seekable, uint16* stream_type); - -NPError NPP_DestroyStream(NPP instance, NPStream* stream, NPReason reason); - -NPError NPP_GetValue(NPP instance, NPPVariable variable, void* value); - -NPError NPP_SetValue(NPP instance, NPNVariable variable, void* value); - -int32 NPP_WriteReady(NPP instance, NPStream* stream); - -int32 NPP_Write(NPP instance, NPStream* stream, int32 offset, int32 len, - void* buffer); -void NPP_URLNotify(NPP instance, const char* url, NPReason reason, - void* notifyData); - -void NPP_Print(NPP instance, NPPrint* print_info); - -} // namespace chrome_frame - -#endif // CHROME_FRAME_CHROME_FRAME_NPAPI_ENTRYPOINTS_H_ diff --git a/chrome_frame/test/chrome_frame_unittests.cc b/chrome_frame/test/chrome_frame_unittests.cc index 9497162..bfd863b 100644 --- a/chrome_frame/test/chrome_frame_unittests.cc +++ b/chrome_frame/test/chrome_frame_unittests.cc @@ -1745,8 +1745,9 @@ TEST_F(ChromeFrameTestWithWebServer, FullTabModeIE_ChromeFrameXHRAuthHeaderTest) { chrome_frame_test::TimedMsgLoop loop; - ASSERT_TRUE(LaunchBrowser( - IE, kChromeFrameFullTabModeXMLHttpRequestAuthHeaderTestUrl)); + ASSERT_TRUE( + LaunchBrowser(IE, + kChromeFrameFullTabModeXMLHttpRequestAuthHeaderTestUrl)); loop.RunFor(kChromeFrameLongNavigationTimeoutInSeconds); @@ -1754,19 +1755,3 @@ TEST_F(ChromeFrameTestWithWebServer, ASSERT_TRUE( CheckResultFile(L"FullTab_XMLHttpRequestAuthorizationHeaderTest", "OK")); } - -const wchar_t kChromeFrameFullTabModeDeleteCookieTest[] = - L"files/fulltab_delete_cookie_test.html"; - -TEST_F(ChromeFrameTestWithWebServer, - FullTabModeIE_ChromeFrameDeleteCookieTest) { - chrome_frame_test::TimedMsgLoop loop; - - ASSERT_TRUE(LaunchBrowser(IE, kChromeFrameFullTabModeDeleteCookieTest)); - - loop.RunFor(kChromeFrameLongNavigationTimeoutInSeconds); - - chrome_frame_test::CloseAllIEWindows(); - ASSERT_TRUE(CheckResultFile(L"FullTab_DeleteCookieTest", "OK")); -} - diff --git a/chrome_frame/test/data/fulltab_delete_cookie_test.html b/chrome_frame/test/data/fulltab_delete_cookie_test.html deleted file mode 100644 index 62c5df0..0000000 --- a/chrome_frame/test/data/fulltab_delete_cookie_test.html +++ /dev/null @@ -1,47 +0,0 @@ -<html> - <head> - <meta http-equiv="x-ua-compatible" content="chrome=1" /> - <title>FullTab mode cookie deletion test</title> - </head> - - <script type="text/javascript" - src="chrome_frame_tester_helpers.js"></script> - - <script type="text/javascript"> - function onLoad() { - if (!isRunningInChrome()) { - onFailure("FullTab_DeleteCookieTest", 1, "Not running in Chrome"); - return; - } - - // The path of the cookie in this test is set to "/." As a result it - // is set twice, once for the original URL and once for the - // chrome_frame_tester_helpers.js script. We attempt to delete - // the cookie twice and validate that the end result is null. - // First validate that the document cookie contains the substring - // CF_FullTabDeleteCookie=1; CF_FullTabDeleteCookie=1 - // Then erase the first cookie and validate that it no longer contains - // this string. - var cookie_found = - /CF_FullTabDeleteCookie=1; CF_FullTabDeleteCookie=1/.test( - document.cookie); - if (cookie_found) { - eraseCookie("CF_FullTabDeleteCookie"); - cookie_found = - /CF_FullTabDeleteCookie=1; CF_FullTabDeleteCookie=1/.test( - document.cookie); - if (!cookie_found) { - onSuccess("FullTab_DeleteCookieTest", 1); - } else { - onFailure("FullTab_DeleteCookieTest", 1, "Delete cookie failed"); - } - } else { - onFailure("FullTab_DeleteCookieTest", 1, "Expected cookies not set"); - } - } - </script> - - <body onload="onLoad();"> - This tests whether cookies get deleted correctly in full tab mode - </body> -</html> diff --git a/chrome_frame/test/data/fulltab_delete_cookie_test.html.mock-http-headers b/chrome_frame/test/data/fulltab_delete_cookie_test.html.mock-http-headers deleted file mode 100644 index 53edac0..0000000 --- a/chrome_frame/test/data/fulltab_delete_cookie_test.html.mock-http-headers +++ /dev/null @@ -1,3 +0,0 @@ -HTTP/1.0 200 OK -Content-type: text/html -Set-Cookie: CF_FullTabDeleteCookie=1;path=/ diff --git a/chrome_frame/test/html_util_unittests.cc b/chrome_frame/test/html_util_unittests.cc index 7884638..969e680 100644 --- a/chrome_frame/test/html_util_unittests.cc +++ b/chrome_frame/test/html_util_unittests.cc @@ -5,8 +5,6 @@ #include <windows.h> #include <atlsecurity.h> #include <shellapi.h> -#include <string> -#include <vector> #include "base/basictypes.h" #include "base/file_util.h" @@ -24,7 +22,6 @@ #include "chrome_frame/chrome_frame_delegate.h" #include "chrome_frame/html_utils.h" #include "testing/gtest/include/gtest/gtest.h" -#include "chrome/browser/automation/url_request_automation_job.h" const char kChromeFrameUserAgent[] = "chromeframe"; @@ -363,25 +360,4 @@ TEST(HttpUtils, HasFrameBustingHeader) { "X-Frame-Options: ALLOWall\r\n")); } -TEST(HttpCookieTest, IdentifyDuplicateCookieTest) { - std::vector<std::string> header_cookies; - header_cookies.push_back("BLAHHH; Path=/;"); - - EXPECT_FALSE(URLRequestAutomationJob::IsCookiePresentInCookieHeader( - "BLAHHH=1", header_cookies)); - - header_cookies.clear(); - - header_cookies.push_back("BLAHHH=1; Path=/;"); - - EXPECT_TRUE(URLRequestAutomationJob::IsCookiePresentInCookieHeader( - "BLAHHH=1", header_cookies)); - - header_cookies.clear(); - - header_cookies.push_back("BLAH=1; Path=/blah;"); - - EXPECT_FALSE(URLRequestAutomationJob::IsCookiePresentInCookieHeader( - "BLAH", header_cookies)); -} |