summaryrefslogtreecommitdiffstats
path: root/chrome_frame/chrome_frame_npapi.cc
diff options
context:
space:
mode:
authorrogerta@chromium.org <rogerta@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-04-01 03:00:52 +0000
committerrogerta@chromium.org <rogerta@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-04-01 03:00:52 +0000
commita83880dc0aa05ad44546c7d5a06781dd9c236bcd (patch)
treeb75c9b6ddb2b8d4978d2f4389798512b80923f1d /chrome_frame/chrome_frame_npapi.cc
parent196d0b8189d0ed873adb87aa21beface3f4002b0 (diff)
downloadchromium_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.cc34
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,