diff options
author | bauerb@chromium.org <bauerb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-11-09 22:06:31 +0000 |
---|---|---|
committer | bauerb@chromium.org <bauerb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-11-09 22:06:31 +0000 |
commit | 825ccf4856fd35ee3108d57f58a6b6391292963b (patch) | |
tree | 0a3dc89dc98fb231b1427228cab40d433c25fe3e | |
parent | bea64854fa2057f90b3a64375b3042cce71e7233 (diff) | |
download | chromium_src-825ccf4856fd35ee3108d57f58a6b6391292963b.zip chromium_src-825ccf4856fd35ee3108d57f58a6b6391292963b.tar.gz chromium_src-825ccf4856fd35ee3108d57f58a6b6391292963b.tar.bz2 |
Merge 108705 - Show missing plug-in infobar only if a plug-in is available.
BUG=101821
TEST=see bug
Review URL: http://codereview.chromium.org/8473001
TBR=bauerb@chromium.org
Review URL: http://codereview.chromium.org/8505037
git-svn-id: svn://svn.chromium.org/chrome/branches/912/src@109313 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/default_plugin/plugin_impl_aura.cc | 4 | ||||
-rw-r--r-- | chrome/default_plugin/plugin_impl_gtk.cc | 6 | ||||
-rw-r--r-- | chrome/default_plugin/plugin_impl_mac.mm | 4 | ||||
-rw-r--r-- | chrome/default_plugin/plugin_impl_win.cc | 21 | ||||
-rw-r--r-- | chrome/default_plugin/plugin_installer_base.cc | 7 | ||||
-rw-r--r-- | chrome/default_plugin/plugin_installer_base.h | 5 |
6 files changed, 28 insertions, 19 deletions
diff --git a/chrome/default_plugin/plugin_impl_aura.cc b/chrome/default_plugin/plugin_impl_aura.cc index aabb3c7..40cb7ba 100644 --- a/chrome/default_plugin/plugin_impl_aura.cc +++ b/chrome/default_plugin/plugin_impl_aura.cc @@ -36,8 +36,8 @@ bool PluginInstallerImpl::Initialize(void* module_handle, return false; } - return PluginInstallerBase::Initialize(module_handle, instance, mime_type, - argc, argn, argv); + PluginInstallerBase::SetRoutingIds(argc, argn, argv); + return true; } bool PluginInstallerImpl::NPP_SetWindow(NPWindow* window_info) { diff --git a/chrome/default_plugin/plugin_impl_gtk.cc b/chrome/default_plugin/plugin_impl_gtk.cc index 378e80d..771901d 100644 --- a/chrome/default_plugin/plugin_impl_gtk.cc +++ b/chrome/default_plugin/plugin_impl_gtk.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 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. @@ -49,8 +49,8 @@ bool PluginInstallerImpl::Initialize(void* module_handle, NPP instance, instance_ = instance; mime_type_ = mime_type; - return PluginInstallerBase::Initialize(module_handle, instance, mime_type, - argc, argn, argv); + PluginInstallerBase::SetRoutingIds(argc, argn, argv); + return true; } bool PluginInstallerImpl::NPP_SetWindow(NPWindow* window_info) { diff --git a/chrome/default_plugin/plugin_impl_mac.mm b/chrome/default_plugin/plugin_impl_mac.mm index 927c32f..36a7dfd 100644 --- a/chrome/default_plugin/plugin_impl_mac.mm +++ b/chrome/default_plugin/plugin_impl_mac.mm @@ -57,8 +57,8 @@ bool PluginInstallerImpl::Initialize(void* module_handle, NPP instance, ResourceBundle& rb = ResourceBundle::GetSharedInstance(); image_ = rb.GetNativeImageNamed(IDR_PLUGIN_ICON); - return PluginInstallerBase::Initialize(module_handle, instance, mime_type, - argc, argn, argv); + PluginInstallerBase::SetRoutingIds(argc, argn, argv); + return true; } bool PluginInstallerImpl::NPP_SetWindow(NPWindow* window_info) { diff --git a/chrome/default_plugin/plugin_impl_win.cc b/chrome/default_plugin/plugin_impl_win.cc index d61228b..0b7043a 100644 --- a/chrome/default_plugin/plugin_impl_win.cc +++ b/chrome/default_plugin/plugin_impl_win.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 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. @@ -87,6 +87,9 @@ bool PluginInstallerImpl::Initialize(HINSTANCE module_handle, NPP instance, InitializeResources(module_handle); + // Set the routing IDs before downloading the plug-in file, so we can + // immediately notify the browser if a plug-in is available. + PluginInstallerBase::SetRoutingIds(argc, argn, argv); if (!disable_plugin_finder_) { if (!installation_job_monitor_thread_->Initialize()) { NOTREACHED() << "Failed to initialize plugin install job"; @@ -98,8 +101,7 @@ bool PluginInstallerImpl::Initialize(HINSTANCE module_handle, NPP instance, } else { DisplayStatus(IDS_DEFAULT_PLUGIN_GET_PLUGIN_MSG_PLUGIN_FINDER_DISABLED); } - return PluginInstallerBase::Initialize(module_handle, instance, mime_type, - argc, argn, argv); + return true; } void PluginInstallerImpl::Shutdown() { @@ -265,6 +267,8 @@ void PluginInstallerImpl::URLNotify(const char* url, NPReason reason) { if (plugin_available) { DVLOG(1) << "Plugin available for mime type " << mime_type_; + NotifyPluginStatus( + webkit::npapi::default_plugin::MISSING_PLUGIN_AVAILABLE); DisplayAvailablePluginStatus(); } else { DLOG(WARNING) << "No plugin available for mime type " << mime_type_; @@ -328,9 +332,7 @@ bool PluginInstallerImpl::NPP_SetWindow(NPWindow* window_info) { UpdateWindow(hwnd()); ShowWindow(hwnd(), SW_SHOW); - // Show the infobar only once. - if (show_install_infobar_) { - show_install_infobar_ = false; + if (plugin_installer_state() == PluginListDownloaded) { NotifyPluginStatus( webkit::npapi::default_plugin::MISSING_PLUGIN_AVAILABLE); } @@ -669,6 +671,13 @@ bool PluginInstallerImpl::InitializeResources(HINSTANCE module_handle) { void PluginInstallerImpl::NotifyPluginStatus(int status) { #if !defined(USE_AURA) + if (status == webkit::npapi::default_plugin::MISSING_PLUGIN_AVAILABLE) { + // Show the infobar only once. + if (!IsWindow(hwnd()) || !show_install_infobar_) + return; + show_install_infobar_ = false; + } + ChildThread::current()->Send( new ChromePluginProcessHostMsg_MissingPluginStatus( status, diff --git a/chrome/default_plugin/plugin_installer_base.cc b/chrome/default_plugin/plugin_installer_base.cc index e863564..bba7df6 100644 --- a/chrome/default_plugin/plugin_installer_base.cc +++ b/chrome/default_plugin/plugin_installer_base.cc @@ -16,9 +16,9 @@ PluginInstallerBase::PluginInstallerBase() PluginInstallerBase::~PluginInstallerBase() { } -bool PluginInstallerBase::Initialize(void* module_handle, NPP instance, - NPMIMEType mime_type, int16 argc, - char* argn[], char* argv[]) { +void PluginInstallerBase::SetRoutingIds(int16 argc, + char* argn[], + char* argv[]) { for (int16_t index = 0; index < argc; ++index) { if (!base::strncasecmp(argn[index], content::kDefaultPluginRenderProcessId, @@ -30,5 +30,4 @@ bool PluginInstallerBase::Initialize(void* module_handle, NPP instance, base::StringToInt(argv[index], &render_view_id_); } } - return true; } diff --git a/chrome/default_plugin/plugin_installer_base.h b/chrome/default_plugin/plugin_installer_base.h index 928ad10..1f20a68 100644 --- a/chrome/default_plugin/plugin_installer_base.h +++ b/chrome/default_plugin/plugin_installer_base.h @@ -14,8 +14,9 @@ class PluginInstallerBase { PluginInstallerBase(); virtual ~PluginInstallerBase(); - bool Initialize(void* module_handle, NPP instance, NPMIMEType mime_type, - int16 argc, char* argn[], char* argv[]); + // Parses the arguments passed in to the plug-in for the IDs of the renderer + // process and RenderView. + void SetRoutingIds(int16 argc, char* argn[], char* argv[]); int renderer_process_id() const { return renderer_process_id_; |