Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1885)

Unified Diff: chrome/default_plugin/plugin_impl_win.cc

Issue 7812020: Moved the following IPC messages used by the chrome NPAPI plugin installer out of content (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/default_plugin/plugin_impl_win.h ('k') | chrome/default_plugin/plugin_installer_base.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/default_plugin/plugin_impl_win.cc
===================================================================
--- chrome/default_plugin/plugin_impl_win.cc (revision 98657)
+++ chrome/default_plugin/plugin_impl_win.cc (working copy)
@@ -10,6 +10,7 @@
#include "base/path_service.h"
#include "base/string_util.h"
#include "base/utf_string_conversions.h"
+#include "chrome/common/chrome_plugin_messages.h"
#include "chrome/default_plugin/plugin_main.h"
#include "content/common/child_thread.h"
#include "content/common/plugin_messages.h"
@@ -23,6 +24,9 @@
static const int TOOLTIP_MAX_WIDTH = 500;
+int PluginInstallerImpl::instance_count_ = 0;
+bool PluginInstallerImpl::show_install_infobar_ = true;
+
PluginInstallerImpl::PluginInstallerImpl(int16 mode)
: instance_(NULL),
mode_(mode),
@@ -40,9 +44,14 @@
new PluginInstallationJobMonitorThread()),
plugin_database_handler_(*this),
plugin_download_url_for_display_(false) {
+ instance_count_++;
}
PluginInstallerImpl::~PluginInstallerImpl() {
+ instance_count_--;
+ if (instance_count_ == 0)
+ show_install_infobar_ = true;
+
if (!disable_plugin_finder_)
installation_job_monitor_thread_->Stop();
@@ -72,7 +81,7 @@
mime_type_ = mime_type;
ChildThread::current()->Send(
- new PluginProcessHostMsg_GetPluginFinderUrl(&plugin_finder_url_));
+ new ChromePluginProcessHostMsg_GetPluginFinderUrl(&plugin_finder_url_));
if (plugin_finder_url_.empty())
disable_plugin_finder_ = true;
@@ -89,8 +98,8 @@
} else {
DisplayStatus(IDS_DEFAULT_PLUGIN_GET_PLUGIN_MSG_PLUGIN_FINDER_DISABLED);
}
-
- return true;
+ return PluginInstallerBase::Initialize(module_handle, instance, mime_type,
+ argc, argn, argv);
}
void PluginInstallerImpl::Shutdown() {
@@ -257,8 +266,6 @@
if (plugin_available) {
DVLOG(1) << "Plugin available for mime type " << mime_type_;
DisplayAvailablePluginStatus();
- NotifyPluginStatus(
- webkit::npapi::default_plugin::MISSING_PLUGIN_AVAILABLE);
} else {
DLOG(WARNING) << "No plugin available for mime type " << mime_type_;
DisplayStatus(IDS_DEFAULT_PLUGIN_NO_PLUGIN_AVAILABLE_MSG);
@@ -267,15 +274,6 @@
}
int16 PluginInstallerImpl::NPP_HandleEvent(void* event) {
- NPEvent* npp_event = static_cast<NPEvent*>(event);
- if (npp_event->event ==
- webkit::npapi::default_plugin::kInstallMissingPluginMessage) {
- // We could get this message because InfoBar may not be in sync with our
- // internal processing. So we need to check the status.
- if (plugin_installer_state() == PluginListDownloaded) {
- ShowInstallDialog();
- }
- }
return 0;
}
@@ -330,6 +328,12 @@
UpdateWindow(hwnd());
ShowWindow(hwnd(), SW_SHOW);
+ // Show the infobar only once.
+ if (show_install_infobar_) {
+ show_install_infobar_ = false;
+ NotifyPluginStatus(
+ webkit::npapi::default_plugin::MISSING_PLUGIN_AVAILABLE);
+ }
return true;
}
@@ -342,7 +346,7 @@
DisplayStatus(IDS_DEFAULT_PLUGIN_DOWNLOADING_PLUGIN_MSG);
if (!plugin_download_url_for_display_) {
- ChildThread::current()->Send(new PluginProcessHostMsg_DownloadUrl(
+ ChildThread::current()->Send(new ChromePluginProcessHostMsg_DownloadUrl(
plugin_download_url_, hwnd()));
} else {
default_plugin::g_browser->geturl(instance(),
@@ -624,6 +628,18 @@
return 0;
}
+LRESULT PluginInstallerImpl::OnInstallPluginMessage(UINT message,
+ WPARAM wparam,
+ LPARAM lparam,
+ BOOL& handled) {
+ // We could get this message because InfoBar may not be in sync with our
+ // internal processing. So we need to check the status.
+ if (plugin_installer_state() == PluginListDownloaded) {
+ ShowInstallDialog();
+ }
+ return 0;
+}
+
bool PluginInstallerImpl::InitializeResources(HINSTANCE module_handle) {
DCHECK(icon_ == NULL);
DCHECK(regular_font_ == NULL);
@@ -650,9 +666,10 @@
}
void PluginInstallerImpl::NotifyPluginStatus(int status) {
- default_plugin::g_browser->getvalue(
- instance_,
- static_cast<NPNVariable>(
- webkit::npapi::default_plugin::kMissingPluginStatusStart + status),
- NULL);
+ ChildThread::current()->Send(
+ new ChromePluginProcessHostMsg_MissingPluginStatus(
+ status,
+ renderer_process_id(),
+ render_view_id(),
+ hwnd()));
}
« no previous file with comments | « chrome/default_plugin/plugin_impl_win.h ('k') | chrome/default_plugin/plugin_installer_base.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698