Index: webkit/default_plugin/plugin_impl_win.cc |
=================================================================== |
--- webkit/default_plugin/plugin_impl_win.cc (revision 25626) |
+++ webkit/default_plugin/plugin_impl_win.cc (working copy) |
@@ -12,9 +12,6 @@ |
#include "googleurl/src/gurl.h" |
#include "grit/webkit_strings.h" |
#include "unicode/locid.h" |
-#include "webkit/default_plugin/activex_installer.h" |
-#include "webkit/activex_shim/activex_shared.h" |
-#include "webkit/activex_shim/npn_scripting.h" |
#include "webkit/default_plugin/default_plugin_shared.h" |
#include "webkit/default_plugin/plugin_main.h" |
#include "webkit/glue/webkit_glue.h" |
@@ -23,7 +20,6 @@ |
PluginInstallerImpl::PluginInstallerImpl(int16 mode) |
: instance_(NULL), |
- is_activex_(false), |
mode_(mode), |
plugin_install_stream_(NULL), |
plugin_installer_state_(PluginInstallerStateUndefined), |
@@ -34,7 +30,6 @@ |
regular_font_(NULL), |
underline_font_(NULL), |
tooltip_(NULL), |
- activex_installer_(NULL), |
installation_job_monitor_thread_( |
new PluginInstallationJobMonitorThread()), |
plugin_database_handler_(*this), |
@@ -50,11 +45,6 @@ |
if (underline_font_) |
DeleteObject(underline_font_); |
- if (activex_installer_) { |
- activex_installer_->Cleanup(); |
- activex_installer_->Release(); |
- } |
- |
if (tooltip_) |
DestroyWindow(tooltip_); |
} |
@@ -66,19 +56,18 @@ |
DCHECK(instance != NULL); |
DCHECK(module_handle != NULL); |
+ if (mime_type == NULL || strlen(mime_type) == 0) { |
+ DLOG(WARNING) << __FUNCTION__ << " Invalid parameters passed in"; |
+ NOTREACHED(); |
+ return false; |
+ } |
+ |
instance_ = instance; |
mime_type_ = mime_type; |
- // The clsid without the {} parentheses. |
- std::string raw_activex_clsid; |
- if (!ParseInstantiationArguments(mime_type, instance, argc, argn, argv, |
- &raw_activex_clsid, &is_activex_, |
- &activex_clsid_, |
- &activex_codebase_, |
- &plugin_download_url_, |
- &plugin_finder_url_)) { |
- DLOG(ERROR) << "Incorrect arguments passed to plugin"; |
+ if (!webkit_glue::GetPluginFinderURL(&plugin_finder_url_)) { |
NOTREACHED(); |
+ DLOG(WARNING) << __FUNCTION__ << " Failed to get the plugin finder URL"; |
return false; |
} |
@@ -90,28 +79,9 @@ |
InitializeResources(module_handle); |
- if (is_activex_) { |
- // If the codebase is not from a whitelisted website, we do not allow |
- // download. |
- if (!activex_shim::IsCodebaseAllowed(raw_activex_clsid, |
- activex_codebase_)) { |
- activex_codebase_.clear(); |
- plugin_download_url_.clear(); |
- } |
+ DisplayStatus(IDS_DEFAULT_PLUGIN_GET_PLUGIN_MSG_NO_PLUGIN_NAME); |
+ plugin_database_handler_.DownloadPluginsFileIfNeeded(plugin_finder_url_); |
- if (!plugin_download_url_.empty()) { |
- set_plugin_installer_state(PluginListDownloaded); |
- DisplayAvailablePluginStatus(); |
- NotifyPluginStatus(default_plugin::MISSING_PLUGIN_AVAILABLE); |
- } else { |
- set_plugin_installer_state(PluginListDownloadFailed); |
- DisplayStatus(IDS_DEFAULT_PLUGIN_NO_PLUGIN_AVAILABLE_MSG); |
- } |
- } else { |
- DisplayStatus(IDS_DEFAULT_PLUGIN_GET_PLUGIN_MSG_NO_PLUGIN_NAME); |
- plugin_database_handler_.DownloadPluginsFileIfNeeded(plugin_finder_url_); |
- } |
- |
return true; |
} |
@@ -288,8 +258,6 @@ |
} |
int16 PluginInstallerImpl::NPP_HandleEvent(void* event) { |
- // This is a hack. The renderer will send a direct custom message to ask for |
- // installation. |
NPEvent* npp_event = static_cast<NPEvent*>(event); |
if (npp_event->event == kInstallMissingPluginMessage) { |
// We could get this message because InfoBar may not be in sync with our |
@@ -362,25 +330,16 @@ |
DisplayStatus(IDS_DEFAULT_PLUGIN_DOWNLOADING_PLUGIN_MSG); |
- if (is_activex_) { |
- if (activex_installer_ == NULL) { |
- CComObject<ActiveXInstaller>::CreateInstance(&activex_installer_); |
- activex_installer_->AddRef(); |
- } |
- activex_installer_->StartDownload(activex_clsid_, activex_codebase_, |
- hwnd(), kActivexInstallResult); |
+ if (!plugin_download_url_for_display_) { |
+ webkit_glue::DownloadUrl(plugin_download_url_, hwnd()); |
} else { |
- if (!plugin_download_url_for_display_) { |
- webkit_glue::DownloadUrl(plugin_download_url_, hwnd()); |
- } else { |
- default_plugin::g_browser->geturl(instance(), |
- plugin_download_url_.c_str(), |
- "_blank"); |
- set_plugin_installer_state(PluginInstallerLaunchSuccess); |
- DisplayStatus(IDS_DEFAULT_PLUGIN_REFRESH_PLUGIN_MSG); |
- enable_click_ = true; |
- RefreshDisplay(); |
- } |
+ default_plugin::g_browser->geturl(instance(), |
+ plugin_download_url_.c_str(), |
+ "_blank"); |
+ set_plugin_installer_state(PluginInstallerLaunchSuccess); |
+ DisplayStatus(IDS_DEFAULT_PLUGIN_REFRESH_PLUGIN_MSG); |
+ enable_click_ = true; |
+ RefreshDisplay(); |
} |
} |
@@ -653,43 +612,6 @@ |
return 0; |
} |
-LRESULT PluginInstallerImpl::OnActiveXInstallResult(UINT message, |
- WPARAM wparam, |
- LPARAM lparam, |
- BOOL& handled) { |
- handled = TRUE; |
- |
- if (SUCCEEDED(wparam)) { |
- set_plugin_installer_state(PluginInstallerLaunchSuccess); |
- DisplayStatus(IDS_DEFAULT_PLUGIN_REFRESH_PLUGIN_MSG); |
- PostMessage(hwnd(), kRefreshPluginsMessage, 0, 0); |
- } else if ((wparam == INET_E_UNKNOWN_PROTOCOL) || |
- (wparam == HRESULT_FROM_WIN32(ERROR_MOD_NOT_FOUND))) { |
- set_plugin_installer_state(PluginDownloadFailed); |
- DisplayPluginDownloadFailedStatus(); |
- } else { |
- set_plugin_installer_state(PluginInstallerLaunchFailure); |
- DisplayStatus(IDS_DEFAULT_PLUGIN_INSTALLATION_FAILED_MSG); |
- } |
- return 0; |
-} |
- |
-std::string PluginInstallerImpl::ResolveURL(NPP instance, |
- const std::string& relative_url) { |
- // The NPAPI functions may not be available if this function is called |
- // as a result of a unit test. |
- if (default_plugin::g_browser) { |
- NPObject* object = NULL; |
- default_plugin::g_browser->getvalue(instance, NPNVWindowNPObject, &object); |
- activex_shim::NPNScriptableObject window(instance, object); |
- std::wstring url = |
- window.GetObjectProperty("document").GetStringProperty("URL"); |
- GURL base(url); |
- return base.Resolve(relative_url).spec(); |
- } |
- return relative_url; |
-} |
- |
bool PluginInstallerImpl::InitializeResources(HINSTANCE module_handle) { |
DCHECK(icon_ == NULL); |
DCHECK(regular_font_ == NULL); |
@@ -715,68 +637,6 @@ |
return true; |
} |
-bool PluginInstallerImpl::ParseInstantiationArguments( |
- NPMIMEType mime_type, |
- NPP instance, |
- int16 argc, |
- char* argn[], |
- char* argv[], |
- std::string* raw_activex_clsid, |
- bool* is_activex, |
- std::string* activex_clsid, |
- std::string* activex_codebase, |
- std::string* plugin_download_url, |
- std::string* plugin_finder_url) { |
- |
- if (!raw_activex_clsid || !is_activex || !activex_clsid || |
- !plugin_download_url || !plugin_finder_url || !activex_codebase) { |
- NOTREACHED(); |
- return false; |
- } |
- |
- *is_activex = false; |
- |
- bool valid_mime_type = (mime_type != NULL ? strlen(mime_type) > 0 : false); |
- |
- for (int i = 0; i < argc; ++i) { |
- // We should only look for activex installation if the mime type passed in |
- // is not valid. In any case this code will be taken out when we remove |
- // the activex shim. |
- if (!valid_mime_type && LowerCaseEqualsASCII(argn[i], "classid") && |
- activex_shim::GetClsidFromClassidAttribute(argv[i], |
- raw_activex_clsid)) { |
- *is_activex = true; |
- *activex_clsid = std::string("{") + *raw_activex_clsid + "}"; |
- } |
- if (LowerCaseEqualsASCII(argn[i], "codebase")) { |
- *activex_codebase = ResolveURL(instance, argv[i]); |
- size_t pos = activex_codebase->find('#'); |
- if (pos != std::string::npos) |
- *plugin_download_url = activex_codebase->substr(0, pos); |
- else |
- *plugin_download_url = *activex_codebase; |
- } |
- } |
- |
- if (!*is_activex) { |
- if (!valid_mime_type || !instance) { |
- DLOG(WARNING) << __FUNCTION__ << " Invalid parameters passed in"; |
- NOTREACHED(); |
- return false; |
- } |
- |
- if (!webkit_glue::GetPluginFinderURL(plugin_finder_url)) { |
- NOTREACHED(); |
- DLOG(WARNING) << __FUNCTION__ << " Failed to get the plugin finder URL"; |
- return false; |
- } |
- |
- DLOG(INFO) << "Plugin finder URL is " << plugin_finder_url->c_str(); |
- } |
- |
- return true; |
-} |
- |
void PluginInstallerImpl::NotifyPluginStatus(int status) { |
default_plugin::g_browser->getvalue( |
instance_, |