summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbauerb@chromium.org <bauerb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-11-09 22:06:31 +0000
committerbauerb@chromium.org <bauerb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-11-09 22:06:31 +0000
commit825ccf4856fd35ee3108d57f58a6b6391292963b (patch)
tree0a3dc89dc98fb231b1427228cab40d433c25fe3e
parentbea64854fa2057f90b3a64375b3042cce71e7233 (diff)
downloadchromium_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.cc4
-rw-r--r--chrome/default_plugin/plugin_impl_gtk.cc6
-rw-r--r--chrome/default_plugin/plugin_impl_mac.mm4
-rw-r--r--chrome/default_plugin/plugin_impl_win.cc21
-rw-r--r--chrome/default_plugin/plugin_installer_base.cc7
-rw-r--r--chrome/default_plugin/plugin_installer_base.h5
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_;