summaryrefslogtreecommitdiffstats
path: root/chrome_frame
diff options
context:
space:
mode:
authorananta@chromium.org <ananta@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-07-29 23:16:27 +0000
committerananta@chromium.org <ananta@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-07-29 23:16:27 +0000
commit5b8d052aa6f76078b7710a8f6c860bf733c5fc14 (patch)
tree6cce213d4472b4c1d349f745918a39f7fb95b921 /chrome_frame
parent80cdb9fef61dc06c379027ad37fe40f45e061792 (diff)
downloadchromium_src-5b8d052aa6f76078b7710a8f6c860bf733c5fc14.zip
chromium_src-5b8d052aa6f76078b7710a8f6c860bf733c5fc14.tar.gz
chromium_src-5b8d052aa6f76078b7710a8f6c860bf733c5fc14.tar.bz2
The NPAPI ChromeFrame plugin is unable to set cookies in Firefox as it does not provide access to the nsIServiceManager
interface via NPN_GetValue for NPNVserviceManager. Fix is to use the NS_GetServiceManager first and if that fails then fallback to using the old method. Fixes bug http://code.google.com/p/chromium/issues/detail?id=50681 Bug=50681 Review URL: http://codereview.chromium.org/2884050 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@54221 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome_frame')
-rw-r--r--chrome_frame/np_browser_functions.cc2
-rw-r--r--chrome_frame/np_utils.cc13
2 files changed, 10 insertions, 5 deletions
diff --git a/chrome_frame/np_browser_functions.cc b/chrome_frame/np_browser_functions.cc
index 801d60a..597fde3 100644
--- a/chrome_frame/np_browser_functions.cc
+++ b/chrome_frame/np_browser_functions.cc
@@ -461,7 +461,7 @@ NPError SetValueForURL(NPP instance, NPNURLVariable variable, const char* url,
const char* value, uint32 len) {
DCHECK(IsInitialized()) << __FUNCTION__;
DCHECK(npapi::VersionMinor() >= NPVERS_HAS_URL_AND_AUTH_INFO);
- if (g_setvalueforurl) {
+ if (!g_setvalueforurl) {
NOTREACHED();
return NPERR_INCOMPATIBLE_VERSION_ERROR;
}
diff --git a/chrome_frame/np_utils.cc b/chrome_frame/np_utils.cc
index 2549504..469c8a3 100644
--- a/chrome_frame/np_utils.cc
+++ b/chrome_frame/np_utils.cc
@@ -30,10 +30,15 @@ bool GetXPCOMCookieServiceAndURI(NPP instance, const std::string& url,
DCHECK(uri);
ScopedNsPtr<nsIServiceManager> service_manager;
- NPError nperr = npapi::GetValue(instance, NPNVserviceManager,
- service_manager.Receive());
- if (nperr != NPERR_NO_ERROR || !service_manager.get())
- return false;
+
+ NPError nperr = NS_GetServiceManager(service_manager.Receive());
+ if (nperr != NPERR_NO_ERROR || !service_manager.get()) {
+ NPError nperr = npapi::GetValue(instance, NPNVserviceManager,
+ service_manager.Receive());
+ if (nperr != NPERR_NO_ERROR || !service_manager.get()) {
+ return false;
+ }
+ }
ScopedNsPtr<nsIIOService, &IID_nsIIOService> io_service;
service_manager->GetServiceByContractID(