diff options
author | rogerta@chromium.org <rogerta@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-04-01 03:00:52 +0000 |
---|---|---|
committer | rogerta@chromium.org <rogerta@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-04-01 03:00:52 +0000 |
commit | a83880dc0aa05ad44546c7d5a06781dd9c236bcd (patch) | |
tree | b75c9b6ddb2b8d4978d2f4389798512b80923f1d /chrome_frame/chrome_frame_npapi.cc | |
parent | 196d0b8189d0ed873adb87aa21beface3f4002b0 (diff) | |
download | chromium_src-a83880dc0aa05ad44546c7d5a06781dd9c236bcd.zip chromium_src-a83880dc0aa05ad44546c7d5a06781dd9c236bcd.tar.gz chromium_src-a83880dc0aa05ad44546c7d5a06781dd9c236bcd.tar.bz2 |
In order for CF to support FF3.6, the code that checks for privilege mode needs to be
updated since it currently depends on APIs that have been deprecated. The
new method for determining if CF is running in privilege mode is to verify that
the URL of the page that instantiates CF is a "chrome:" URL.
An advantage to this change is the code should now work in all version of
Firefox. Previously, the code was different for each of versions 3.0, 3.5, and
now 3.6.
Note that the API change to npapi::GetStringIdentifiers() was necessary to get
around a problem where xpcom defines the same typedefs as chrome base, but with
different types. If there is a better solution, please let me know.
TEST=see existing unit tests
BUG=none
Review URL: http://codereview.chromium.org/1535002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@43311 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome_frame/chrome_frame_npapi.cc')
-rw-r--r-- | chrome_frame/chrome_frame_npapi.cc | 34 |
1 files changed, 2 insertions, 32 deletions
diff --git a/chrome_frame/chrome_frame_npapi.cc b/chrome_frame/chrome_frame_npapi.cc index 6fbd76a..ce1e654 100644 --- a/chrome_frame/chrome_frame_npapi.cc +++ b/chrome_frame/chrome_frame_npapi.cc @@ -11,6 +11,7 @@ #include "base/win_util.h" #include "chrome/test/automation/tab_proxy.h" #include "chrome_frame/ff_privilege_check.h" +#include "chrome_frame/np_utils.h" #include "chrome_frame/scoped_ns_ptr_win.h" #include "chrome_frame/utils.h" @@ -163,40 +164,9 @@ ChromeFrameNPAPI::~ChromeFrameNPAPI() { Uninitialize(); } -std::string GetLocation(NPP instance, NPObject* window) { - if (!window) { - // Can fail if the browser is closing (seen in Opera). - return ""; - } - - std::string result; - ScopedNpVariant href; - ScopedNpVariant location; - - bool ok = npapi::GetProperty(instance, window, - npapi::GetStringIdentifier("location"), &location); - DCHECK(ok); - DCHECK(location.type == NPVariantType_Object); - - if (ok) { - ok = npapi::GetProperty(instance, - location.value.objectValue, - npapi::GetStringIdentifier("href"), - &href); - DCHECK(ok); - DCHECK(href.type == NPVariantType_String); - if (ok) { - result.assign(href.value.stringValue.UTF8Characters, - href.value.stringValue.UTF8Length); - } - } - - return result; -} - std::string ChromeFrameNPAPI::GetLocation() { // Note that GetWindowObject() will cache the window object here. - return ::GetLocation(instance_, GetWindowObject()); + return np_utils::GetLocation(instance_, GetWindowObject()); } bool ChromeFrameNPAPI::Initialize(NPMIMEType mime_type, NPP instance, |