diff options
Diffstat (limited to 'chrome')
27 files changed, 6 insertions, 4033 deletions
diff --git a/chrome/browser/plugin_installer.cc b/chrome/browser/plugin_installer.cc index b7f38c5..4bbe22c 100644 --- a/chrome/browser/plugin_installer.cc +++ b/chrome/browser/plugin_installer.cc @@ -11,7 +11,7 @@ #include "chrome/browser/tab_contents/tab_contents.h" #include "grit/generated_resources.h" #include "grit/theme_resources.h" -#include "webkit/glue/plugins/default_plugin_shared.h" +#include "webkit/default_plugin/default_plugin_shared.h" PluginInstaller::PluginInstaller(TabContents* tab_contents) : ConfirmInfoBarDelegate(tab_contents), diff --git a/chrome/chrome_common.gypi b/chrome/chrome_common.gypi index 8e3830c..08c643a 100644 --- a/chrome/chrome_common.gypi +++ b/chrome/chrome_common.gypi @@ -125,7 +125,6 @@ 'chrome_strings', 'common_constants', 'common_net', - 'default_plugin/default_plugin.gyp:default_plugin', 'theme_resources', '../app/app.gyp:app_base', '../app/app.gyp:app_resources', @@ -142,6 +141,7 @@ '../third_party/sqlite/sqlite.gyp:sqlite', '../third_party/zlib/zlib.gyp:zlib', '../third_party/npapi/npapi.gyp:npapi', + '../webkit/default_plugin/default_plugin.gyp:default_plugin', '../webkit/support/webkit_support.gyp:appcache', '../webkit/support/webkit_support.gyp:glue', ], diff --git a/chrome/chrome_tests.gypi b/chrome/chrome_tests.gypi index 62cf34a..16a1037 100644 --- a/chrome/chrome_tests.gypi +++ b/chrome/chrome_tests.gypi @@ -295,9 +295,9 @@ '../third_party/icu/icu.gyp:icuuc', '../third_party/libxml/libxml.gyp:libxml', # run time dependencies - 'default_plugin/default_plugin.gyp:default_plugin', '../third_party/ppapi/ppapi.gyp:ppapi_tests', '../webkit/support/webkit_support.gyp:npapi_layout_test_plugin', + '../webkit/default_plugin/default_plugin.gyp:default_plugin', ], 'include_dirs': [ '..', diff --git a/chrome/common/DEPS b/chrome/common/DEPS index 2f3b9b0..75629ca 100644 --- a/chrome/common/DEPS +++ b/chrome/common/DEPS @@ -1,12 +1,12 @@ include_rules = [ "+chrome/plugin", # For checking whether we're a plugin process. - "+chrome/default_plugin", "+grit", # For generated headers "+libxml", "+media/audio", "+remoting/client/plugin", "+sandbox/src", "+skia/include", + "+webkit/default_plugin", "+webkit/glue", # Other libraries. diff --git a/chrome/common/default_plugin.cc b/chrome/common/default_plugin.cc index bba738b..2dc8488 100644 --- a/chrome/common/default_plugin.cc +++ b/chrome/common/default_plugin.cc @@ -4,8 +4,8 @@ #include "chrome/common/default_plugin.h" -#include "chrome/default_plugin/plugin_main.h" #include "webkit/glue/plugins/plugin_list.h" +#include "webkit/default_plugin/plugin_main.h" namespace chrome { diff --git a/chrome/default_plugin/DEPS b/chrome/default_plugin/DEPS deleted file mode 100644 index a24c01b..0000000 --- a/chrome/default_plugin/DEPS +++ /dev/null @@ -1,4 +0,0 @@ -include_rules = [ - "+app", - "+third_party/libxml", -] diff --git a/chrome/default_plugin/default_plugin.gyp b/chrome/default_plugin/default_plugin.gyp deleted file mode 100644 index b2852bf..0000000 --- a/chrome/default_plugin/default_plugin.gyp +++ /dev/null @@ -1,66 +0,0 @@ -# Copyright (c) 2009 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. - -{ - 'variables': { - 'chromium_code': 1, - }, - 'targets': [ - { - 'target_name': 'default_plugin', - 'type': '<(library)', - 'dependencies': [ - '<(DEPTH)/net/net.gyp:net_resources', - '<(DEPTH)/third_party/icu/icu.gyp:icui18n', - '<(DEPTH)/third_party/icu/icu.gyp:icuuc', - '<(DEPTH)/third_party/libxml/libxml.gyp:libxml', - '<(DEPTH)/third_party/npapi/npapi.gyp:npapi', - '<(DEPTH)/webkit/support/webkit_support.gyp:webkit_resources', - '<(DEPTH)/webkit/support/webkit_support.gyp:webkit_strings', - ], - 'include_dirs': [ - '<(DEPTH)', - '<(DEPTH)/third_party/wtl/include', - ], - 'sources': [ - 'plugin_impl_gtk.cc', - 'plugin_impl_gtk.h', - 'plugin_impl_mac.h', - 'plugin_impl_mac.mm', - 'plugin_impl_win.cc', - 'plugin_impl_win.h', - 'plugin_main.cc', - 'plugin_main.h', - ], - 'conditions': [ - ['OS=="win"', { - 'msvs_guid': '5916D37D-8C97-424F-A904-74E52594C2D6', - 'link_settings': { - 'libraries': ['-lurlmon.lib'], - }, - 'sources': [ - 'default_plugin_resources.h', - 'install_dialog.cc', - 'install_dialog.h', - 'plugin_database_handler.cc', - 'plugin_database_handler.h', - 'plugin_install_job_monitor.cc', - 'plugin_install_job_monitor.h', - ], - }], - ['OS=="linux"', { - 'dependencies': [ - '<(DEPTH)/build/linux/system.gyp:gtk', - ], - }], - ], - }, - ], -} - -# Local Variables: -# tab-width:2 -# indent-tabs-mode:nil -# End: -# vim: set expandtab tabstop=2 shiftwidth=2: diff --git a/chrome/default_plugin/default_plugin_resources.h b/chrome/default_plugin/default_plugin_resources.h deleted file mode 100644 index 6e6942c..0000000 --- a/chrome/default_plugin/default_plugin_resources.h +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright (c) 2006-2008 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. - -#define IDD_DEFAULT_PLUGIN_INSTALL_DIALOG 2208 -#define IDI_DEFAULT_PLUGIN_ICON 2209 -#define IDB_GET_THE_PLUGIN 2210 -#define IDC_PLUGIN_MAIN_LABEL 2211 -#define IDC_PLUGIN_INSTALL_LABEL 2212 -#define IDC_PLUGIN_URL_LABEL 2213 -#define IDC_PLUGIN_INSTALL_CONFIRMATION_LABEL 2214 -#define IDC_PLUGIN_NAME 2215 -#define IDC_PLUGIN_NAME_VALUE 2216 diff --git a/chrome/default_plugin/default_plugin_resources.rc b/chrome/default_plugin/default_plugin_resources.rc deleted file mode 100644 index 53460af..0000000 --- a/chrome/default_plugin/default_plugin_resources.rc +++ /dev/null @@ -1,31 +0,0 @@ -// Resources used by webkit/default_plugin. -// -// Paths in this file are relative to SolutionDir. - -#ifdef APSTUDIO_INVOKED - #error // Don't open in the Visual Studio resource editor! -#endif //APSTUDIO_INVOKED - -#include <winuser.h> -#include "webkit\\default_plugin\\default_plugin_resources.h" - - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog template for the plugin installation dialog. -// -IDD_DEFAULT_PLUGIN_INSTALL_DIALOG DIALOGEX 0, 0, 240, 130 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Plug-in Needed" -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - DEFPUSHBUTTON "",IDB_GET_THE_PLUGIN,32,100,81,14 - PUSHBUTTON "",IDCANCEL,133,100,74,14 - LTEXT "",IDC_PLUGIN_INSTALL_CONFIRMATION_LABEL,17,50,204,27 -END - -///////////////////////////////////////////////////////////////////////////// -// -// Icon used by the default plugin window. -// -IDI_DEFAULT_PLUGIN_ICON ICON "webkit\\default_plugin\\default_plugin.ico" diff --git a/chrome/default_plugin/install_dialog.cc b/chrome/default_plugin/install_dialog.cc deleted file mode 100644 index e61001a..0000000 --- a/chrome/default_plugin/install_dialog.cc +++ /dev/null @@ -1,203 +0,0 @@ -// Copyright (c) 2006-2008 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. - -#include "chrome/default_plugin/install_dialog.h" - -#include "base/hash_tables.h" -#include "base/lazy_instance.h" -#include "base/logging.h" -#include "base/string_util.h" -#include "chrome/default_plugin/plugin_impl.h" -#include "grit/webkit_strings.h" -#include "webkit/glue/webkit_glue.h" - -typedef base::hash_map<const std::wstring, PluginInstallDialog*> DialogMap; -base::LazyInstance<DialogMap> s_dialogs(base::LINKER_INITIALIZED); - -PluginInstallDialog* PluginInstallDialog::AddInstaller( - PluginInstallerImpl* plugin_impl, const std::wstring& plugin_name) { - PluginInstallDialog* dialog; - if (s_dialogs.Get().count(plugin_name)) { - dialog = s_dialogs.Get()[plugin_name]; - } else { - dialog = new PluginInstallDialog(plugin_name); - } - - dialog->installers_.push_back(plugin_impl); - return dialog; -} - -PluginInstallDialog::PluginInstallDialog(const std::wstring& plugin_name) - : plugin_name_(plugin_name) { - s_dialogs.Get()[plugin_name] = this; -} - -PluginInstallDialog::~PluginInstallDialog() { - s_dialogs.Get().erase(plugin_name_); - if (IsWindow()) - DestroyWindow(); -} - -void PluginInstallDialog::RemoveInstaller(PluginInstallerImpl* installer) { - for (size_t i = 0; i < installers_.size(); ++i) { - if (installers_[i] == installer) { - installers_.erase(installers_.begin() + i); - if (installers_.empty()) - delete this; - return; - } - } - NOTREACHED(); -} - -void PluginInstallDialog::ShowInstallDialog(HWND parent) { - if (IsWindow()) - return; - - Create(parent, NULL); - ShowWindow(SW_SHOW); -} - -HWND PluginInstallDialog::Create(HWND parent_window, LPARAM init_param) { - // Most of the code here is based on CDialogImpl<T>::Create. - DCHECK(m_hWnd == NULL); - - // Allocate the thunk structure here, where we can fail - // gracefully. - BOOL thunk_inited = m_thunk.Init(NULL, NULL); - if (thunk_inited == FALSE) { - SetLastError(ERROR_OUTOFMEMORY); - return NULL; - } - - _AtlWinModule.AddCreateWndData(&m_thunk.cd, this); - -#ifdef _DEBUG - m_bModal = false; -#endif // _DEBUG - - HINSTANCE instance_handle = _AtlBaseModule.GetResourceInstance(); - - HRSRC dialog_resource = FindResource(instance_handle, - MAKEINTRESOURCE(IDD), RT_DIALOG); - if (!dialog_resource) { - NOTREACHED(); - return NULL; - } - - HGLOBAL dialog_template = LoadResource(instance_handle, - dialog_resource); - if (!dialog_template) { - NOTREACHED(); - return NULL; - } - - _DialogSplitHelper::DLGTEMPLATEEX* dialog_template_struct = - reinterpret_cast<_DialogSplitHelper::DLGTEMPLATEEX *>( - ::LockResource(dialog_template)); - DCHECK(dialog_template_struct != NULL); - - unsigned long dialog_template_size = - SizeofResource(instance_handle, dialog_resource); - - HGLOBAL rtl_layout_dialog_template = NULL; - - if (PluginInstallerImpl::IsRTLLayout()) { - rtl_layout_dialog_template = GlobalAlloc(GPTR, dialog_template_size); - DCHECK(rtl_layout_dialog_template != NULL); - - _DialogSplitHelper::DLGTEMPLATEEX* rtl_layout_dialog_template_struct = - reinterpret_cast<_DialogSplitHelper::DLGTEMPLATEEX*>( - ::GlobalLock(rtl_layout_dialog_template)); - DCHECK(rtl_layout_dialog_template_struct != NULL); - - memcpy(rtl_layout_dialog_template_struct, dialog_template_struct, - dialog_template_size); - - rtl_layout_dialog_template_struct->exStyle |= - (WS_EX_LAYOUTRTL | WS_EX_RTLREADING); - - dialog_template_struct = rtl_layout_dialog_template_struct; - } - - HWND dialog_window = - CreateDialogIndirectParam( - instance_handle, - reinterpret_cast<DLGTEMPLATE*>(dialog_template_struct), - parent_window, StartDialogProc, init_param); - - DCHECK(m_hWnd == dialog_window); - - if (rtl_layout_dialog_template) { - GlobalUnlock(rtl_layout_dialog_template); - GlobalFree(rtl_layout_dialog_template); - } - - return dialog_window; -} - - -LRESULT PluginInstallDialog::OnInitDialog(UINT message, WPARAM wparam, - LPARAM lparam, BOOL& handled) { - std::wstring dialog_title = - PluginInstallerImpl::ReplaceStringForPossibleEmptyReplacement( - IDS_DEFAULT_PLUGIN_CONFIRMATION_DIALOG_TITLE, - IDS_DEFAULT_PLUGIN_CONFIRMATION_DIALOG_TITLE_NO_PLUGIN_NAME, - plugin_name_); - AdjustTextDirectionality(&dialog_title); - SetWindowText(dialog_title.c_str()); - - std::wstring get_the_plugin_btn_msg = - webkit_glue::GetLocalizedString( - IDS_DEFAULT_PLUGIN_GET_THE_PLUGIN_BTN_MSG); - AdjustTextDirectionality(&get_the_plugin_btn_msg); - SetDlgItemText(IDB_GET_THE_PLUGIN, get_the_plugin_btn_msg.c_str()); - - std::wstring cancel_plugin_download_msg = - webkit_glue::GetLocalizedString( - IDS_DEFAULT_PLUGIN_CANCEL_PLUGIN_DOWNLOAD_MSG); - AdjustTextDirectionality(&cancel_plugin_download_msg); - SetDlgItemText(IDCANCEL, cancel_plugin_download_msg.c_str()); - - std::wstring plugin_user_action_msg = - PluginInstallerImpl::ReplaceStringForPossibleEmptyReplacement( - IDS_DEFAULT_PLUGIN_USER_OPTION_MSG, - IDS_DEFAULT_PLUGIN_USER_OPTION_MSG_NO_PLUGIN_NAME, - plugin_name_); - AdjustTextDirectionality(&plugin_user_action_msg); - SetDlgItemText(IDC_PLUGIN_INSTALL_CONFIRMATION_LABEL, - plugin_user_action_msg.c_str()); - return 0; -} - - -LRESULT PluginInstallDialog::OnGetPlugin(WORD notify_code, WORD id, - HWND wnd_ctl, BOOL &handled) { - DestroyWindow(); - if (!installers_.empty()) - installers_[0]->DownloadPlugin(); - - return 0; -} - -LRESULT PluginInstallDialog::OnCancel(WORD notify_code, WORD id, HWND wnd_ctl, - BOOL &handled) { - DestroyWindow(); - if (!installers_.empty()) - installers_[0]->DownloadCancelled(); - return 0; -} - -// TODO(idana) bug# 1246452: use the library l10n_util once it is moved from -// the Chrome module into the Base module. For now, we simply copy/paste the -// same code. -void PluginInstallDialog::AdjustTextDirectionality(std::wstring* text) const { - if (PluginInstallerImpl::IsRTLLayout()) { - // Inserting an RLE (Right-To-Left Embedding) mark as the first character. - text->insert(0, L"\x202B"); - - // Inserting a PDF (Pop Directional Formatting) mark as the last character. - text->append(L"\x202C"); - } -} diff --git a/chrome/default_plugin/install_dialog.h b/chrome/default_plugin/install_dialog.h deleted file mode 100644 index 601127dd..0000000 --- a/chrome/default_plugin/install_dialog.h +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright (c) 2006-2008 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. - -#ifndef CHROME_DEFAULT_PLUGIN_INSTALL_DIALOG_H_ -#define CHROME_DEFAULT_PLUGIN_INSTALL_DIALOG_H_ - -#include <atlbase.h> -#include <atlwin.h> -#include <string> -#include <vector> - -#include "chrome/default_plugin/default_plugin_resources.h" - -class PluginInstallerImpl; - -// Displays the plugin installation dialog containing information -// about the mime type of the plugin being downloaded, the URL -// where it would be downloaded from, etc. -class PluginInstallDialog : public CDialogImpl<PluginInstallDialog> { - public: - enum {IDD = IDD_DEFAULT_PLUGIN_INSTALL_DIALOG}; - - BEGIN_MSG_MAP(PluginInstallDialog) - MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog) - COMMAND_ID_HANDLER(IDB_GET_THE_PLUGIN, OnGetPlugin) - COMMAND_ID_HANDLER(IDCANCEL, OnCancel) - END_MSG_MAP() - - // Creates or returns the existing object for the given plugin name. - // Call RemoveInstaller when done. - static PluginInstallDialog* AddInstaller(PluginInstallerImpl* plugin_impl, - const std::wstring& plugin_name); - - // Lets this object know that the given installer object is going away. - void RemoveInstaller(PluginInstallerImpl* installer); - - void ShowInstallDialog(HWND parent); - - private: - PluginInstallDialog(const std::wstring& plugin_name); - ~PluginInstallDialog(); - - // Implemented to ensure that we handle RTL layouts correctly. - HWND Create(HWND parent_window, LPARAM init_param); - - LRESULT OnInitDialog(UINT message, WPARAM wparam, LPARAM lparam, - BOOL& handled); - LRESULT OnGetPlugin(WORD notify_code, WORD id, HWND wnd_ctl, BOOL &handled); - LRESULT OnCancel(WORD notify_code, WORD id, HWND wnd_ctl, BOOL &handled); - - // Wraps the string with Unicode directionality characters in order to make - // sure BiDi text is rendered correctly when the UI layout is right-to-left. - void AdjustTextDirectionality(std::wstring* text) const; - - std::vector<PluginInstallerImpl*> installers_; - std::wstring plugin_name_; -}; - -#endif // CHROME_DEFAULT_PLUGIN_INSTALL_DIALOG_H_ diff --git a/chrome/default_plugin/plugin_database_handler.cc b/chrome/default_plugin/plugin_database_handler.cc deleted file mode 100644 index ab79752..0000000 --- a/chrome/default_plugin/plugin_database_handler.cc +++ /dev/null @@ -1,358 +0,0 @@ -// Copyright (c) 2006-2008 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. - -#include "chrome/default_plugin/plugin_database_handler.h" - -#if defined(USE_SYSTEM_LIBXML) -#include <parser.h> -#include <xpath.h> -#else -#include "third_party/libxml/include/libxml/parser.h" -#include "third_party/libxml/include/libxml/xpath.h" -#endif - -#include "base/file_util.h" -#include "base/path_service.h" -#include "base/string_util.h" -#include "base/time.h" -#include "base/utf_string_conversions.h" -#include "chrome/default_plugin/plugin_impl.h" -#include "chrome/default_plugin/plugin_main.h" - -using base::Time; -using base::TimeDelta; - -PluginDatabaseHandler::PluginDatabaseHandler( - PluginInstallerImpl& plugin_installer_instance) - : plugin_downloads_file_(INVALID_HANDLE_VALUE), - plugin_installer_instance_(plugin_installer_instance), - ignore_plugin_db_data_(false) { -} - -PluginDatabaseHandler::~PluginDatabaseHandler() { - if (plugin_downloads_file_ != INVALID_HANDLE_VALUE) { - ::CloseHandle(plugin_downloads_file_); - plugin_downloads_file_ = INVALID_HANDLE_VALUE; - } -} - -bool PluginDatabaseHandler::DownloadPluginsFileIfNeeded( - const std::string& plugin_finder_url) { - DCHECK(!plugin_finder_url.empty()); - // The time in days for which the plugins list is cached. - // TODO(iyengar) Make this configurable. - const int kPluginsListCacheTimeInDays = 3; - - plugin_finder_url_ = plugin_finder_url; - - PathService::Get(base::DIR_MODULE, &plugins_file_); - plugins_file_ += L"\\chrome_plugins_file.xml"; - - bool initiate_download = false; - if (!file_util::PathExists(FilePath::FromWStringHack(plugins_file_))) { - initiate_download = true; - } else { - SYSTEMTIME creation_system_time = {0}; - if (!file_util::GetFileCreationLocalTime(plugins_file_, - &creation_system_time)) { - NOTREACHED(); - return false; - } - - FILETIME creation_file_time = {0}; - ::SystemTimeToFileTime(&creation_system_time, &creation_file_time); - - FILETIME current_time = {0}; - ::GetSystemTimeAsFileTime(¤t_time); - - Time file_time = Time::FromFileTime(creation_file_time); - Time current_system_time = Time::FromFileTime(current_time); - - TimeDelta time_diff = file_time - current_system_time; - if (time_diff.InDays() > kPluginsListCacheTimeInDays) { - initiate_download = true; - } - } - - if (initiate_download) { - DLOG(INFO) << "Initiating GetURLNotify on the plugin finder URL " - << plugin_finder_url.c_str(); - - plugin_installer_instance_.set_plugin_installer_state( - PluginListDownloadInitiated); - - DCHECK(default_plugin::g_browser->geturlnotify); - default_plugin::g_browser->geturlnotify( - plugin_installer_instance_.instance(), plugin_finder_url.c_str(), - NULL, NULL); - } else { - DLOG(INFO) << "Plugins file " << plugins_file_.c_str() - << " already exists"; - plugin_downloads_file_ = ::CreateFile(plugins_file_.c_str(), GENERIC_READ, - FILE_SHARE_READ, NULL, OPEN_EXISTING, - FILE_ATTRIBUTE_NORMAL, NULL); - if (plugin_downloads_file_ == INVALID_HANDLE_VALUE) { - DLOG(INFO) << "Failed to open plugins file " - << plugins_file_.c_str() << " Error " - << ::GetLastError(); - NOTREACHED(); - return false; - } - // The URLNotify function contains all handling needed to parse the plugins - // file and display the UI accordingly. - plugin_installer_instance_.set_plugin_installer_state( - PluginListDownloadInitiated); - plugin_installer_instance_.URLNotify(plugin_finder_url.c_str(), - NPRES_DONE); - } - return true; -} - -int32 PluginDatabaseHandler::Write(NPStream* stream, int32 offset, - int32 buffer_length, void* buffer) { - if (ignore_plugin_db_data_) { - return buffer_length; - } - - if (plugin_downloads_file_ == INVALID_HANDLE_VALUE) { - DLOG(INFO) << "About to create plugins file " << plugins_file_.c_str(); - plugin_downloads_file_ = CreateFile(plugins_file_.c_str(), - GENERIC_READ | GENERIC_WRITE, - FILE_SHARE_READ, NULL, CREATE_ALWAYS, - FILE_ATTRIBUTE_NORMAL, NULL); - if (plugin_downloads_file_ == INVALID_HANDLE_VALUE) { - unsigned long error = ::GetLastError(); - if (error == ERROR_SHARING_VIOLATION) { - // File may have been downloaded by another plugin instance on this - // page. - plugin_downloads_file_ = ::CreateFile( - plugins_file_.c_str(), GENERIC_READ, - FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, - FILE_ATTRIBUTE_NORMAL, NULL); - if (plugin_downloads_file_ != INVALID_HANDLE_VALUE) { - ignore_plugin_db_data_ = true; - return buffer_length; - } - } - - DLOG(INFO) << "Failed to create plugins file " - << plugins_file_.c_str() << " Error " - << ::GetLastError(); - NOTREACHED(); - return 0; - } - } - - DWORD bytes_written = 0; - if (0 == lstrcmpiA(stream->url, plugin_finder_url_.c_str())) { - DCHECK(plugin_downloads_file_ != INVALID_HANDLE_VALUE); - - WriteFile(plugin_downloads_file_, buffer, buffer_length, &bytes_written, - NULL); - DCHECK_EQ(buffer_length, static_cast<int32>(bytes_written)); - } - return bytes_written; -} - - -bool PluginDatabaseHandler::ParsePluginList() { - if (plugin_downloads_file_ == INVALID_HANDLE_VALUE) { - DLOG(WARNING) << "Invalid plugins file"; - NOTREACHED(); - return false; - } - - bool parse_result = false; - - std::string plugins_file = WideToUTF8(plugins_file_.c_str()); - xmlDocPtr plugin_downloads_doc = xmlParseFile(plugins_file.c_str()); - if (plugin_downloads_doc == NULL) { - DLOG(WARNING) << "Failed to parse plugins file " << plugins_file.c_str(); - return parse_result; - } - - xmlXPathContextPtr context = NULL; - xmlXPathObjectPtr plugins_result = NULL; - - do { - context = xmlXPathNewContext(plugin_downloads_doc); - if (context == NULL) { - DLOG(WARNING) << "Failed to retrieve XPath context"; - NOTREACHED(); - parse_result = false; - break; - } - - plugins_result = - xmlXPathEvalExpression(reinterpret_cast<const xmlChar*>("//plugin"), - context); - if ((plugins_result == NULL) || - xmlXPathNodeSetIsEmpty(plugins_result->nodesetval)) { - DLOG(WARNING) << "Failed to find XPath //plugin"; - NOTREACHED(); - parse_result = false; - break; - } - - xmlNodeSetPtr plugin_list = plugins_result->nodesetval; - for (int plugin_index = 0; plugin_index < plugin_list->nodeNr; - ++plugin_index) { - PluginDetail plugin_detail; - if (!ReadPluginInfo(plugin_list->nodeTab[plugin_index]->children, - &plugin_detail)) { - DLOG(ERROR) << "Failed to read plugin details at index " - << plugin_index; - break; - } - downloaded_plugins_list_.push_back(plugin_detail); - } - if (downloaded_plugins_list_.size()) - parse_result = true; - } while (0); - - xmlXPathFreeContext(context); - xmlXPathFreeObject(plugins_result); - xmlFreeDoc(plugin_downloads_doc); - xmlCleanupParser(); - DLOG(INFO) << "Parse plugins file result " << parse_result; - return parse_result; -} - -bool PluginDatabaseHandler::GetPluginDetailsForMimeType( - const char* mime_type, const char* language, - std::string* download_url, std::wstring* plugin_name, - bool* download_url_for_display) { - if (!mime_type || !language || !download_url || !plugin_name || - !download_url_for_display) { - NOTREACHED(); - return false; - } - - PluginList::iterator plugin_index; - for (plugin_index = downloaded_plugins_list_.begin(); - plugin_index != downloaded_plugins_list_.end(); - ++plugin_index) { - PluginDetail& current_plugin = *plugin_index; - - std::vector<std::string>::iterator mime_type_index; - for (mime_type_index = current_plugin.mime_types.begin(); - mime_type_index != current_plugin.mime_types.end(); - ++mime_type_index) { - if ((0 == lstrcmpiA(mime_type, (*mime_type_index).c_str())) && - (0 == lstrcmpiA(language, current_plugin.language.c_str()))) { - *download_url = current_plugin.download_url; - *plugin_name = current_plugin.display_name; - *download_url_for_display = current_plugin.download_url_for_display; - return true; - } - } - } - return false; -} - -void PluginDatabaseHandler::Close(bool delete_file) { - if (plugin_downloads_file_ != INVALID_HANDLE_VALUE) { - ::CloseHandle(plugin_downloads_file_); - plugin_downloads_file_ = INVALID_HANDLE_VALUE; - if (delete_file) { - ::DeleteFile(plugins_file_.c_str()); - plugins_file_.clear(); - } - } -} - -bool PluginDatabaseHandler::ReadPluginInfo(_xmlNode* plugin_node, - PluginDetail* plugin_detail) { - static const char kMimeTypeSeparator = ';'; - - if (!plugin_node) { - NOTREACHED(); - return false; - } - - _xmlNode* plugin_mime_type = plugin_node->next; - if ((plugin_mime_type == NULL) || - (plugin_mime_type->next == NULL)) { - DLOG(WARNING) << "Failed to find mime type node in file"; - NOTREACHED(); - return false; - } - _xmlNode* plugin_mime_type_vals = plugin_mime_type->children; - if (plugin_mime_type_vals == NULL) { - DLOG(WARNING) << "Invalid mime type"; - NOTREACHED(); - return false; - } - // Skip the first child of each node as it is the text element - // for that node. - _xmlNode* plugin_lang_node = plugin_mime_type->next->next; - if ((plugin_lang_node == NULL) || - (plugin_lang_node->next == NULL)) { - DLOG(WARNING) << "Failed to find plugin language node"; - NOTREACHED(); - return false; - } - _xmlNode* plugin_lang_val = plugin_lang_node->children; - if (plugin_lang_val == NULL) { - DLOG(WARNING) << "Invalid plugin language"; - NOTREACHED(); - return false; - } - _xmlNode* plugin_name_node = plugin_lang_node->next->next; - if ((plugin_name_node == NULL) || - (plugin_name_node->next == NULL)) { - DLOG(WARNING) << "Failed to find plugin name node"; - NOTREACHED(); - return false; - } - _xmlNode* plugin_name_val = plugin_name_node->children; - if (plugin_name_val == NULL) { - DLOG(WARNING) << "Invalid plugin name"; - NOTREACHED(); - return false; - } - _xmlNode* plugin_download_url_node = plugin_name_node->next->next; - if (plugin_download_url_node == NULL) { - DLOG(WARNING) << "Failed to find plugin URL node"; - NOTREACHED(); - return false; - } - _xmlNode* plugin_download_url_val = plugin_download_url_node->children; - if (plugin_download_url_val == NULL) { - DLOG(WARNING) << "Invalid plugin URL"; - NOTREACHED(); - return false; - } - - // Look for the DisplayUrl node. By default every URL is treated as an - // executable URL. - plugin_detail->download_url_for_display = false; - - _xmlNode* plugin_download_url_for_display_node = - plugin_download_url_node->next->next; - if (plugin_download_url_for_display_node) { - _xmlNode* url_for_display_val = - plugin_download_url_for_display_node->children; - if (url_for_display_val) { - int url_for_display = 0; - StringToInt(reinterpret_cast<const char*>(url_for_display_val->content), - &url_for_display); - if (url_for_display != 0) - plugin_detail->download_url_for_display = true; - } - } - - plugin_detail->display_name = - UTF8ToWide(reinterpret_cast<const char*>(plugin_name_val->content)); - plugin_detail->download_url = - reinterpret_cast<const char*>(plugin_download_url_val->content); - - SplitString(reinterpret_cast<const char*>(plugin_mime_type_vals->content), - kMimeTypeSeparator, &plugin_detail->mime_types); - - plugin_detail->language = - reinterpret_cast<const char*>(plugin_lang_val->content); - - return true; -} diff --git a/chrome/default_plugin/plugin_database_handler.h b/chrome/default_plugin/plugin_database_handler.h deleted file mode 100644 index fcbdfd0..0000000 --- a/chrome/default_plugin/plugin_database_handler.h +++ /dev/null @@ -1,156 +0,0 @@ -// Copyright (c) 2006-2008 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. - -#ifndef CHROME_DEFAULT_PLUGIN_PLUGIN_DATABASE_HANDLER_H_ -#define CHROME_DEFAULT_PLUGIN_PLUGIN_DATABASE_HANDLER_H_ - -#include <windows.h> -#include <string> -#include <vector> - -#include "base/basictypes.h" -#include "third_party/npapi/bindings/npapi.h" - -// Individual plugin details -struct PluginDetail { - // List of mime types supported by the plugin. - std::vector<std::string> mime_types; - // The URL where the plugin can be downloaded from. - std::string download_url; - // The display name for the plugin. - std::wstring display_name; - // Language of the plugin installer. (en-us, etc). - std::string language; - // Indicates if the download URL points to an exe or to a URL which - // needs to be displayed in a tab. - bool download_url_for_display; -}; - -typedef std::vector<PluginDetail> PluginList; - -class PluginInstallerImpl; -struct _xmlNode; - -// This class handles download of the plugins database file from the plugin -// finder URL passed in. It also provides functionality to parse the plugins -// file and to locate the desired plugin mime type in the parsed plugin list. -// The format of the plugins databse file is as below:- -// <plugins> -// <plugin> -// <mime_types> </mime_types> (semicolon separated list of mime types -// supported by the plugin) -// <lang> </lang> (Supported language) -// <url> </url> (Link to the plugin installer) -// <displayurl> 0 </displayurl> (Indicates if the URL is a display URL. -// defaults to 0. -// </plugin> -// <plugin> -// </plugins> -class PluginDatabaseHandler { - public: - // plugin_installer_instance is a reference maintained to the current - // PluginInstallerImpl instance. - explicit PluginDatabaseHandler( - PluginInstallerImpl& plugin_installer_instance); - - virtual ~PluginDatabaseHandler(); - - // Downloads the plugins database file if needed. - // - // Parameters: - // plugin_finder_url - // Specifies the http/https location of the chrome plugin finder. - // Returns true on success. - bool DownloadPluginsFileIfNeeded(const std::string& plugin_finder_url); - - // Writes data to the plugins database file. - // - // Parameters: - // stream - // Pointer to the current stream. - // offset - // Indicates the data offset. - // buffer_length - // Specifies the length of the data buffer. - // buffer - // Pointer to the actual buffer. - // Returns the number of bytes actually written, 0 on error. - int32 Write(NPStream* stream, int32 offset, int32 buffer_length, - void* buffer); - - const std::wstring& plugins_file() const { - return plugins_file_; - } - - // Parses the XML file containing the list of available third-party - // plugins and adds them to a list. - // Returns true on success - bool ParsePluginList(); - - // Returns the plugin details for the third party plugin mime type passed in. - // - // Parameters: - // mime_type - // Specifies the mime type of the desired third party plugin. - // language - // Specifies the desired plugin language. - // download_url - // Output parameter which contans the plugin download URL on success. - // display_name - // Output parameter which contains the display name of the plugin on - // success. - // download_url_for_display - // Output parameter which indicates if the plugin URL points to an exe - // or not. - // Returns true if the plugin details were found. - bool GetPluginDetailsForMimeType(const char* mime_type, - const char* language, - std::string* download_url, - std::wstring* display_name, - bool* download_url_for_display); - - // Closes the handle to the plugin database file. - // - // Parameters: - // delete_file - // Indicates if the plugin database file should be deleted. - void Close(bool delete_file); - - protected: - // Reads plugin information off an individual XML node. - // - // Parameters: - // plugin_node - // Pointer to the plugin XML node. - // plugin_detail - // Output parameter which contains the details of the plugin on success. - // Returns true on success. - bool ReadPluginInfo(_xmlNode* plugin_node, PluginDetail* plugin_detail); - - private: - // Contains the full path of the downloaded plugins file containing - // information about available third party plugin downloads. - std::wstring plugins_file_; - // Handle to the downloaded plugins file. - HANDLE plugin_downloads_file_; - // List of downloaded plugins. This is generated the first time the - // plugins file is downloaded and parsed. Each item in the list is - // of the type PluginDetail, and contains information about the third - // party plugin like it's mime type, download link, etc. - PluginList downloaded_plugins_list_; - // We maintain a reference to the PluginInstallerImpl instance to be able - // to achieve plugin installer state changes and to notify the instance - // about download completions. - PluginInstallerImpl& plugin_installer_instance_; - // The plugin finder url - std::string plugin_finder_url_; - // Set if the current instance should ignore plugin data. This is required - // if multiple null plugin instances attempt to download the plugin - // database. In this case the first instance to create the plugins database - // file locally writes to the file. The remaining instances ignore the - // downloaded data. - bool ignore_plugin_db_data_; -}; - -#endif // CHROME_DEFAULT_PLUGIN_PLUGIN_DATABASE_HANDLER_H_ diff --git a/chrome/default_plugin/plugin_impl.h b/chrome/default_plugin/plugin_impl.h deleted file mode 100644 index 45e0af3..0000000 --- a/chrome/default_plugin/plugin_impl.h +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright (c) 2009 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. - -#if defined(OS_WIN) -#include "chrome/default_plugin/plugin_impl_win.h" -#elif defined(OS_MACOSX) -#include "chrome/default_plugin/plugin_impl_mac.h" -#elif defined(TOOLKIT_USES_GTK) -#include "chrome/default_plugin/plugin_impl_gtk.h" -#endif diff --git a/chrome/default_plugin/plugin_impl_gtk.cc b/chrome/default_plugin/plugin_impl_gtk.cc deleted file mode 100644 index 19b960e..0000000 --- a/chrome/default_plugin/plugin_impl_gtk.cc +++ /dev/null @@ -1,139 +0,0 @@ -// Copyright (c) 2010 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. - -#include "chrome/default_plugin/plugin_impl_gtk.h" - -#include <gdk/gdkx.h> - -#include "base/file_util.h" -#include "base/path_service.h" -#include "base/string_util.h" -#include "chrome/default_plugin/plugin_main.h" -#include "googleurl/src/gurl.h" -#include "grit/webkit_strings.h" -#include "unicode/locid.h" -#include "webkit/glue/webkit_glue.h" -#include "webkit/glue/plugins/default_plugin_shared.h" - -// TODO(thakis): Most methods in this class are stubbed out an need to be -// implemented. - -PluginInstallerImpl::PluginInstallerImpl(int16 mode) - : container_(NULL) { -} - -PluginInstallerImpl::~PluginInstallerImpl() { - if (container_) - gtk_widget_destroy(container_); -} - -bool PluginInstallerImpl::Initialize(void* module_handle, NPP instance, - NPMIMEType mime_type, int16 argc, - char* argn[], char* argv[]) { - DLOG(INFO) << __FUNCTION__ << " MIME Type : " << mime_type; - DCHECK(instance != 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; - - return true; -} - -bool PluginInstallerImpl::NPP_SetWindow(NPWindow* window_info) { - if (container_) - gtk_widget_destroy(container_); - container_ = gtk_plug_new(reinterpret_cast<XID>(window_info->window)); - - // Add label. - GtkWidget* box = gtk_vbox_new(FALSE, 0); - GtkWidget* label = gtk_label_new("Missing Plug-in"); - gtk_box_pack_start(GTK_BOX(box), label, TRUE, TRUE, 0); - gtk_container_add(GTK_CONTAINER(container_), box); - - gtk_widget_show_all(container_); - - return true; -} - -void PluginInstallerImpl::Shutdown() { -} - -void PluginInstallerImpl::NewStream(NPStream* stream) { - plugin_install_stream_ = stream; -} - -void PluginInstallerImpl::DestroyStream(NPStream* stream, NPError reason) { - if (stream == plugin_install_stream_) - plugin_install_stream_ = NULL; -} - -bool PluginInstallerImpl::WriteReady(NPStream* stream) { - bool ready_to_accept_data = false; - return ready_to_accept_data; -} - -int32 PluginInstallerImpl::Write(NPStream* stream, int32 offset, - int32 buffer_length, void* buffer) { - return true; -} - -void PluginInstallerImpl::ClearDisplay() { -} - -void PluginInstallerImpl::RefreshDisplay() { -} - -bool PluginInstallerImpl::CreateToolTip() { - return true; -} - -void PluginInstallerImpl::UpdateToolTip() { -} - -void PluginInstallerImpl::DisplayAvailablePluginStatus() { -} - -void PluginInstallerImpl::DisplayStatus(int message_resource_id) { -} - -void PluginInstallerImpl::DisplayPluginDownloadFailedStatus() { -} - -void PluginInstallerImpl::URLNotify(const char* url, NPReason reason) { -} - -int16 PluginInstallerImpl::NPP_HandleEvent(void* event) { - return 0; -} - -std::wstring PluginInstallerImpl::ReplaceStringForPossibleEmptyReplacement( - int message_id_with_placeholders, - int messsage_id_without_placeholders, - const std::wstring& replacement_string) { - return L""; -} - -void PluginInstallerImpl::DownloadPlugin() { -} - -void PluginInstallerImpl::DownloadCancelled() { - DisplayAvailablePluginStatus(); -} - -void PluginInstallerImpl::ShowInstallDialog() { -} - -void PluginInstallerImpl::NotifyPluginStatus(int status) { - default_plugin::g_browser->getvalue( - instance_, - static_cast<NPNVariable>( - default_plugin::kMissingPluginStatusStart + status), - NULL); -} diff --git a/chrome/default_plugin/plugin_impl_gtk.h b/chrome/default_plugin/plugin_impl_gtk.h deleted file mode 100644 index ec63218..0000000 --- a/chrome/default_plugin/plugin_impl_gtk.h +++ /dev/null @@ -1,283 +0,0 @@ -// Copyright (c) 2010 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. - -#ifndef CHROME_DEFAULT_PLUGIN_PLUGIN_IMPL_GTK_H_ -#define CHROME_DEFAULT_PLUGIN_PLUGIN_IMPL_GTK_H_ - -#include <string> -#include <vector> - -#include <gtk/gtk.h> - -#include "gfx/native_widget_types.h" -#include "third_party/npapi/bindings/npapi.h" - -// Possible plugin installer states. -enum PluginInstallerState { - PluginInstallerStateUndefined, - PluginListDownloadInitiated, - PluginListDownloaded, - PluginListDownloadedPluginNotFound, - PluginListDownloadFailed, - PluginDownloadInitiated, - PluginDownloadCompleted, - PluginDownloadFailed, - PluginInstallerLaunchSuccess, - PluginInstallerLaunchFailure -}; - -class PluginInstallDialog; -class PluginDatabaseHandler; - -// Provides the plugin installation functionality. This class is -// instantiated with the information like the mime type of the -// target plugin, the display mode, etc. -class PluginInstallerImpl { - public: - // mode is the plugin instantiation mode, i.e. whether it is a full - // page plugin (NP_FULL) or an embedded plugin (NP_EMBED) - explicit PluginInstallerImpl(int16 mode); - virtual ~PluginInstallerImpl(); - - // Initializes the plugin with the instance information, mime type - // and the list of parameters passed down to the plugin from the webpage. - // - // Parameters: - // module_handle - // The handle to the dll in which this object is instantiated. - // instance - // The plugins opaque instance handle. - // mime_type - // Identifies the third party plugin which would be eventually installed. - // argc - // Indicates the count of arguments passed in from the webpage. - // argv - // Pointer to the arguments. - // Returns true on success. - bool Initialize(void* module_handle, NPP instance, NPMIMEType mime_type, - int16 argc, char* argn[], char* argv[]); - - // Informs the plugin of its window information. - // - // Parameters: - // window_info - // The window info passed to npapi. - bool NPP_SetWindow(NPWindow* window_info); - - // Destroys the install dialog. - void Shutdown(); - - // Starts plugin download. Spawns the plugin installer after it is - // downloaded. - void DownloadPlugin(); - - // Indicates that the plugin download was cancelled. - void DownloadCancelled(); - - // Initializes the plugin download stream. - // - // Parameters: - // stream - // Pointer to the new stream being created. - void NewStream(NPStream* stream); - - // Uninitializes the plugin download stream. - // - // Parameters: - // stream - // Pointer to the stream being destroyed. - // reason - // Indicates why the stream is being destroyed. - // - void DestroyStream(NPStream* stream, NPError reason); - - // Determines whether the plugin is ready to accept data. - // We only accept data when we have initiated a download for the plugin - // database. - // - // Parameters: - // stream - // Pointer to the stream being destroyed. - // Returns true if the plugin is ready to accept data. - bool WriteReady(NPStream* stream); - - // Delivers data to the plugin instance. - // - // Parameters: - // stream - // Pointer to the stream being destroyed. - // offset - // Indicates the data offset. - // buffer_length - // Indicates the length of the data buffer. - // buffer - // Pointer to the actual buffer. - // Returns the number of bytes actually written, 0 on error. - int32 Write(NPStream* stream, int32 offset, int32 buffer_length, - void* buffer); - - // Handles notifications received in response to GetURLNotify calls issued - // by the plugin. - // - // Parameters: - // url - // Pointer to the URL. - // reason - // Describes why the notification was sent. - void URLNotify(const char* url, NPReason reason); - - // Used by the renderer to indicate plugin install through the infobar. - int16 NPP_HandleEvent(void* event); - - const std::string& mime_type() const { return mime_type_; } - - // Replaces a resource string with the placeholder passed in as an argument - // - // Parameters: - // message_id_with_placeholders - // The resource id of the string with placeholders. This is only used if - // the placeholder string (the replacement_string) parameter is valid. - // message_id_without_placeholders - // The resource id of the string to be returned if the placeholder is - // empty. - // replacement_string - // The placeholder which replaces tokens in the string identified by - // resource id message_id_with_placeholders. - // Returns a string which has the placeholders replaced, or the string - // without placeholders. - static std::wstring ReplaceStringForPossibleEmptyReplacement( - int message_id_with_placeholders, int message_id_without_placeholders, - const std::wstring& replacement_string); - - // Setter/getter combination to set and retreieve the current - // state of the plugin installer. - void set_plugin_installer_state(PluginInstallerState new_state) { - plugin_installer_state_ = new_state; - } - - PluginInstallerState plugin_installer_state() const { - return plugin_installer_state_; - } - - // Getter for the NPP instance member. - const NPP instance() const { - return instance_; - } - - // Returns whether or not the UI layout is right-to-left (such as Hebrew or - // Arabic). - bool IsRTLLayout() const; - - protected: - // Displays the plugin install confirmation dialog. - void ShowInstallDialog(); - - // Clears the current display state. - void ClearDisplay(); - - // Displays the status message identified by the message resource id - // passed in. - // - // Parameters: - // message_resource_id parameter - // The resource id of the message to be displayed. - void DisplayStatus(int message_resource_id); - - // Displays status information for the third party plugin which is needed - // by the page. - void DisplayAvailablePluginStatus(); - - // Displays information related to third party plugin download failure. - void DisplayPluginDownloadFailedStatus(); - - // Enables the plugin window if required and initiates an update of the - // the plugin window. - void RefreshDisplay(); - - // Create tooltip window. - bool CreateToolTip(); - - // Update ToolTip text with the message shown inside the default plugin. - void UpdateToolTip(); - - // Resolves the relative URL (could be already an absolute URL too) to return - // full URL based on current document's URL and base. - // - // Parameters: - // instance - // The plugins opaque instance handle. - // relative_url - // The URL to be resolved. - // Returns the resolved URL. - std::string ResolveURL(NPP instance, const std::string& relative_url); - - // Initializes resources like the icon, fonts, etc needed by the plugin - // installer - // - // Parameters: - // module_handle - // Handle to the dll in which this object is instantiated. - // Returns true on success. - bool InitializeResources(void *module_handle); - - // Parses the plugin instantiation arguments. This includes checking for - // whether this is an activex install and reading the appropriate - // arguments like codebase, etc. For plugin installs we download the - // plugin finder URL and initalize the mime type and the plugin instance - // info. - // - // Parameters: - // module_handle - // The handle to the dll in which this object is instantiated. - // instance - // The plugins opaque instance handle. - // mime_type - // Identifies the third party plugin which would be eventually installed. - // argc - // Indicates the count of arguments passed in from the webpage. - // argv - // Pointer to the arguments. - // raw_activex_clsid - // Output parameter which contains the CLSID of the Activex plugin needed. - // This is only applicable if the webpage specifically requests an ActiveX - // control. - // Returns true on success. - bool ParseInstantiationArguments(NPMIMEType mime_type, NPP instance, - int16 argc, char* argn[], char* argv[], - std::string* raw_activex_clsid); - - // Paints user action messages to the plugin window. These include messages - // like whether the user should click on the plugin window to download the - // plugin, etc. - // - // Parameters: - // paint_dc - // The device context returned in BeginPaint. - // x_origin - // Horizontal reference point indicating where the text is to be displayed. - // y_origin - // Vertical reference point indicating where the text is to be displayed. - // - void PaintUserActionInformation(gfx::NativeDrawingContext paint_dc, - int x_origin, int y_origin); - - private: - // Notify the renderer that plugin is available to download. - void NotifyPluginStatus(int status); - - // The plugins opaque instance handle - NPP instance_; - // The current stream. - NPStream* plugin_install_stream_; - // The desired mime type. - std::string mime_type_; - // The current state of the plugin installer. - PluginInstallerState plugin_installer_state_; - // GtkPlug containing everything in the plugin. - GtkWidget* container_; - - DISALLOW_COPY_AND_ASSIGN(PluginInstallerImpl); -}; - -#endif // CHROME_DEFAULT_PLUGIN_PLUGIN_IMPL_GTK_H_ diff --git a/chrome/default_plugin/plugin_impl_mac.h b/chrome/default_plugin/plugin_impl_mac.h deleted file mode 100644 index 9e3b7fc..0000000 --- a/chrome/default_plugin/plugin_impl_mac.h +++ /dev/null @@ -1,285 +0,0 @@ -// Copyright (c) 2010 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. - -#ifndef CHROME_DEFAULT_PLUGIN_PLUGIN_IMPL_MAC_H_ -#define CHROME_DEFAULT_PLUGIN_PLUGIN_IMPL_MAC_H_ - -#include <string> -#include <vector> - -#include "gfx/native_widget_types.h" -#include "third_party/npapi/bindings/npapi.h" - -// Possible plugin installer states. -enum PluginInstallerState { - PluginInstallerStateUndefined, - PluginListDownloadInitiated, - PluginListDownloaded, - PluginListDownloadedPluginNotFound, - PluginListDownloadFailed, - PluginDownloadInitiated, - PluginDownloadCompleted, - PluginDownloadFailed, - PluginInstallerLaunchSuccess, - PluginInstallerLaunchFailure -}; - -class PluginInstallDialog; -class PluginDatabaseHandler; - -// Provides the plugin installation functionality. This class is -// instantiated with the information like the mime type of the -// target plugin, the display mode, etc. -class PluginInstallerImpl { - public: - // mode is the plugin instantiation mode, i.e. whether it is a full - // page plugin (NP_FULL) or an embedded plugin (NP_EMBED) - explicit PluginInstallerImpl(int16 mode); - virtual ~PluginInstallerImpl(); - - // Initializes the plugin with the instance information, mime type - // and the list of parameters passed down to the plugin from the webpage. - // - // Parameters: - // module_handle - // The handle to the dll in which this object is instantiated. - // instance - // The plugins opaque instance handle. - // mime_type - // Identifies the third party plugin which would be eventually installed. - // argc - // Indicates the count of arguments passed in from the webpage. - // argv - // Pointer to the arguments. - // Returns true on success. - bool Initialize(void* module_handle, NPP instance, NPMIMEType mime_type, - int16 argc, char* argn[], char* argv[]); - - // Informs the plugin of its window information. - // - // Parameters: - // window_info - // The window info passed to npapi. - bool NPP_SetWindow(NPWindow* window_info); - - // Destroys the install dialog. - void Shutdown(); - - // Starts plugin download. Spawns the plugin installer after it is - // downloaded. - void DownloadPlugin(); - - // Indicates that the plugin download was cancelled. - void DownloadCancelled(); - - // Initializes the plugin download stream. - // - // Parameters: - // stream - // Pointer to the new stream being created. - void NewStream(NPStream* stream); - - // Uninitializes the plugin download stream. - // - // Parameters: - // stream - // Pointer to the stream being destroyed. - // reason - // Indicates why the stream is being destroyed. - // - void DestroyStream(NPStream* stream, NPError reason); - - // Determines whether the plugin is ready to accept data. - // We only accept data when we have initiated a download for the plugin - // database. - // - // Parameters: - // stream - // Pointer to the stream being destroyed. - // Returns true if the plugin is ready to accept data. - bool WriteReady(NPStream* stream); - - // Delivers data to the plugin instance. - // - // Parameters: - // stream - // Pointer to the stream being destroyed. - // offset - // Indicates the data offset. - // buffer_length - // Indicates the length of the data buffer. - // buffer - // Pointer to the actual buffer. - // Returns the number of bytes actually written, 0 on error. - int32 Write(NPStream* stream, int32 offset, int32 buffer_length, - void* buffer); - - // Handles notifications received in response to GetURLNotify calls issued - // by the plugin. - // - // Parameters: - // url - // Pointer to the URL. - // reason - // Describes why the notification was sent. - void URLNotify(const char* url, NPReason reason); - - // Used by the renderer to indicate plugin install through the infobar. - int16 NPP_HandleEvent(void* event); - - const std::string& mime_type() const { return mime_type_; } - - // Replaces a resource string with the placeholder passed in as an argument - // - // Parameters: - // message_id_with_placeholders - // The resource id of the string with placeholders. This is only used if - // the placeholder string (the replacement_string) parameter is valid. - // message_id_without_placeholders - // The resource id of the string to be returned if the placeholder is - // empty. - // replacement_string - // The placeholder which replaces tokens in the string identified by - // resource id message_id_with_placeholders. - // Returns a string which has the placeholders replaced, or the string - // without placeholders. - static std::wstring ReplaceStringForPossibleEmptyReplacement( - int message_id_with_placeholders, int message_id_without_placeholders, - const std::wstring& replacement_string); - - // Setter/getter combination to set and retreieve the current - // state of the plugin installer. - void set_plugin_installer_state(PluginInstallerState new_state) { - plugin_installer_state_ = new_state; - } - - PluginInstallerState plugin_installer_state() const { - return plugin_installer_state_; - } - - // Getter for the NPP instance member. - const NPP instance() const { - return instance_; - } - - // Returns whether or not the UI layout is right-to-left (such as Hebrew or - // Arabic). - bool IsRTLLayout() const; - - protected: - int16 OnDrawRect(CGContextRef context, CGRect dirty_rect); - - // Displays the plugin install confirmation dialog. - void ShowInstallDialog(); - - // Clears the current display state. - void ClearDisplay(); - - // Displays the status message identified by the message resource id - // passed in. - // - // Parameters: - // message_resource_id parameter - // The resource id of the message to be displayed. - void DisplayStatus(int message_resource_id); - - // Displays status information for the third party plugin which is needed - // by the page. - void DisplayAvailablePluginStatus(); - - // Displays information related to third party plugin download failure. - void DisplayPluginDownloadFailedStatus(); - - // Enables the plugin window if required and initiates an update of the - // the plugin window. - void RefreshDisplay(); - - // Create tooltip window. - bool CreateToolTip(); - - // Update ToolTip text with the message shown inside the default plugin. - void UpdateToolTip(); - - // Resolves the relative URL (could be already an absolute URL too) to return - // full URL based on current document's URL and base. - // - // Parameters: - // instance - // The plugins opaque instance handle. - // relative_url - // The URL to be resolved. - // Returns the resolved URL. - std::string ResolveURL(NPP instance, const std::string& relative_url); - - // Initializes resources like the icon, fonts, etc needed by the plugin - // installer - // - // Parameters: - // module_handle - // Handle to the dll in which this object is instantiated. - // Returns true on success. - bool InitializeResources(void *module_handle); - - // Parses the plugin instantiation arguments. This includes checking for - // whether this is an activex install and reading the appropriate - // arguments like codebase, etc. For plugin installs we download the - // plugin finder URL and initalize the mime type and the plugin instance - // info. - // - // Parameters: - // module_handle - // The handle to the dll in which this object is instantiated. - // instance - // The plugins opaque instance handle. - // mime_type - // Identifies the third party plugin which would be eventually installed. - // argc - // Indicates the count of arguments passed in from the webpage. - // argv - // Pointer to the arguments. - // raw_activex_clsid - // Output parameter which contains the CLSID of the Activex plugin needed. - // This is only applicable if the webpage specifically requests an ActiveX - // control. - // Returns true on success. - bool ParseInstantiationArguments(NPMIMEType mime_type, NPP instance, - int16 argc, char* argn[], char* argv[], - std::string* raw_activex_clsid); - - // Paints user action messages to the plugin window. These include messages - // like whether the user should click on the plugin window to download the - // plugin, etc. - // - // Parameters: - // paint_dc - // The device context returned in BeginPaint. - // x_origin - // Horizontal reference point indicating where the text is to be displayed. - // y_origin - // Vertical reference point indicating where the text is to be displayed. - // - void PaintUserActionInformation(gfx::NativeDrawingContext paint_dc, - int x_origin, int y_origin); - - private: - // Notify the renderer that plugin is available to download. - void NotifyPluginStatus(int status); - - // The plugins opaque instance handle - NPP instance_; - // The current stream. - NPStream* plugin_install_stream_; - // The desired mime type. - std::string mime_type_; - // The current state of the plugin installer. - PluginInstallerState plugin_installer_state_; - // Dimensions of the plugin - uint32_t width_; - uint32_t height_; - - DISALLOW_COPY_AND_ASSIGN(PluginInstallerImpl); -}; - - -#endif // CHROME_DEFAULT_PLUGIN_PLUGIN_IMPL_MAC_H_ diff --git a/chrome/default_plugin/plugin_impl_mac.mm b/chrome/default_plugin/plugin_impl_mac.mm deleted file mode 100644 index 253e786..0000000 --- a/chrome/default_plugin/plugin_impl_mac.mm +++ /dev/null @@ -1,179 +0,0 @@ -// Copyright (c) 2010 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. - -#include "chrome/default_plugin/plugin_impl_mac.h" - -#import <Cocoa/Cocoa.h> - -#include "base/file_util.h" -#include "base/path_service.h" -#include "base/string_util.h" -#include "chrome/default_plugin/plugin_main.h" -#include "googleurl/src/gurl.h" -#include "grit/webkit_strings.h" -#include "unicode/locid.h" -#include "webkit/glue/webkit_glue.h" -#include "webkit/glue/plugins/default_plugin_shared.h" - -// TODO(thakis): Most methods in this class are stubbed out and need to be -// implemented. - -PluginInstallerImpl::PluginInstallerImpl(int16 mode) { -} - -PluginInstallerImpl::~PluginInstallerImpl() { -} - -bool PluginInstallerImpl::Initialize(void* module_handle, NPP instance, - NPMIMEType mime_type, int16 argc, - char* argn[], char* argv[]) { - DLOG(INFO) << __FUNCTION__ << " MIME Type : " << mime_type; - DCHECK(instance != 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; - - return true; -} - -bool PluginInstallerImpl::NPP_SetWindow(NPWindow* window_info) { - width_ = window_info->width; - height_ = window_info->height; - return true; -} - -void PluginInstallerImpl::Shutdown() { -} - -void PluginInstallerImpl::NewStream(NPStream* stream) { - plugin_install_stream_ = stream; -} - -void PluginInstallerImpl::DestroyStream(NPStream* stream, NPError reason) { - if (stream == plugin_install_stream_) - plugin_install_stream_ = NULL; -} - -bool PluginInstallerImpl::WriteReady(NPStream* stream) { - bool ready_to_accept_data = false; - return ready_to_accept_data; -} - -int32 PluginInstallerImpl::Write(NPStream* stream, int32 offset, - int32 buffer_length, void* buffer) { - return true; -} - -void PluginInstallerImpl::ClearDisplay() { -} - -void PluginInstallerImpl::RefreshDisplay() { -} - -bool PluginInstallerImpl::CreateToolTip() { - return true; -} - -void PluginInstallerImpl::UpdateToolTip() { -} - -void PluginInstallerImpl::DisplayAvailablePluginStatus() { -} - -void PluginInstallerImpl::DisplayStatus(int message_resource_id) { -} - -void PluginInstallerImpl::DisplayPluginDownloadFailedStatus() { -} - -void PluginInstallerImpl::URLNotify(const char* url, NPReason reason) { -} - -int16 PluginInstallerImpl::NPP_HandleEvent(void* event) { - NPCocoaEvent* npp_event = static_cast<NPCocoaEvent*>(event); - - if (npp_event->type == NPCocoaEventDrawRect) { - CGContextRef context = npp_event->data.draw.context; - CGRect rect = CGRectMake(npp_event->data.draw.x, - npp_event->data.draw.y, - npp_event->data.draw.width, - npp_event->data.draw.height); - return OnDrawRect(context, rect); - } - return 0; -} - -std::wstring PluginInstallerImpl::ReplaceStringForPossibleEmptyReplacement( - int message_id_with_placeholders, - int messsage_id_without_placeholders, - const std::wstring& replacement_string) { - return L""; -} - -void PluginInstallerImpl::DownloadPlugin() { -} - -void PluginInstallerImpl::DownloadCancelled() { - DisplayAvailablePluginStatus(); -} - -int16 PluginInstallerImpl::OnDrawRect(CGContextRef context, CGRect dirty_rect) { - const NSString* text = @"Missing Plug-in"; - const float kTextMarginX = 6; - const float kTextMarginY = 1; - NSSize bounds = NSMakeSize(width_, height_); - - [NSGraphicsContext saveGraphicsState]; - NSGraphicsContext* ns_context = [NSGraphicsContext - graphicsContextWithGraphicsPort:context flipped:YES]; - [NSGraphicsContext setCurrentContext:ns_context]; - - NSShadow* shadow = [[[NSShadow alloc] init] autorelease]; - [shadow setShadowColor:[NSColor colorWithDeviceWhite:0.0 alpha:0.5]]; - [shadow setShadowOffset:NSMakeSize(0, -1)]; - NSFont* font = [NSFont boldSystemFontOfSize:[NSFont smallSystemFontSize]]; - NSDictionary* attributes = [NSDictionary dictionaryWithObjectsAndKeys: - font, NSFontAttributeName, - [NSColor whiteColor], NSForegroundColorAttributeName, - shadow, NSShadowAttributeName, - nil]; - - NSSize text_size = [text sizeWithAttributes:attributes]; - NSRect text_rect; - text_rect.size.width = text_size.width + 2*kTextMarginX; - text_rect.size.height = text_size.height + 2*kTextMarginY; - text_rect.origin.x = (bounds.width - NSWidth(text_rect))/2; - text_rect.origin.y = (bounds.height - NSHeight(text_rect))/2; - - [[NSColor colorWithCalibratedWhite:0.52 alpha:1.0] setFill]; - [[NSBezierPath bezierPathWithRoundedRect:text_rect - xRadius:NSHeight(text_rect)/2 - yRadius:NSHeight(text_rect)/2] fill]; - - NSPoint label_point = NSMakePoint( - roundf(text_rect.origin.x + (text_rect.size.width - text_size.width)/2), - roundf(text_rect.origin.y + (text_rect.size.height - text_size.height)/2)); - [text drawAtPoint:label_point withAttributes:attributes]; - - [NSGraphicsContext restoreGraphicsState]; - return 1; -} - - -void PluginInstallerImpl::ShowInstallDialog() { -} - -void PluginInstallerImpl::NotifyPluginStatus(int status) { - default_plugin::g_browser->getvalue( - instance_, - static_cast<NPNVariable>( - default_plugin::kMissingPluginStatusStart + status), - NULL); -} diff --git a/chrome/default_plugin/plugin_impl_win.cc b/chrome/default_plugin/plugin_impl_win.cc deleted file mode 100644 index 4b8dacb..0000000 --- a/chrome/default_plugin/plugin_impl_win.cc +++ /dev/null @@ -1,646 +0,0 @@ -// Copyright (c) 2010 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. - -#include "chrome/default_plugin/plugin_impl_win.h" - -#include <shellapi.h> - -#include "base/file_util.h" -#include "base/path_service.h" -#include "base/string_util.h" -#include "chrome/default_plugin/plugin_main.h" -#include "googleurl/src/gurl.h" -#include "grit/webkit_strings.h" -#include "unicode/locid.h" -#include "webkit/glue/webkit_glue.h" -#include "webkit/glue/plugins/default_plugin_shared.h" - -static const int TOOLTIP_MAX_WIDTH = 500; - -PluginInstallerImpl::PluginInstallerImpl(int16 mode) - : instance_(NULL), - mode_(mode), - plugin_install_stream_(NULL), - plugin_installer_state_(PluginInstallerStateUndefined), - install_dialog_(NULL), - enable_click_(false), - icon_(NULL), - bold_font_(NULL), - regular_font_(NULL), - underline_font_(NULL), - tooltip_(NULL), - installation_job_monitor_thread_( - new PluginInstallationJobMonitorThread()), - plugin_database_handler_(*this), - plugin_download_url_for_display_(false) { -} - -PluginInstallerImpl::~PluginInstallerImpl() { - installation_job_monitor_thread_->Stop(); - - if (bold_font_) - DeleteObject(bold_font_); - - if (underline_font_) - DeleteObject(underline_font_); - - if (tooltip_) - DestroyWindow(tooltip_); -} - -bool PluginInstallerImpl::Initialize(HINSTANCE module_handle, NPP instance, - NPMIMEType mime_type, int16 argc, - char* argn[], char* argv[]) { - DLOG(INFO) << __FUNCTION__ << " MIME Type : " << mime_type; - 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; - - if (!webkit_glue::GetPluginFinderURL(&plugin_finder_url_)) { - NOTREACHED(); - DLOG(WARNING) << __FUNCTION__ << " Failed to get the plugin finder URL"; - return false; - } - - if (!installation_job_monitor_thread_->Initialize()) { - DLOG(ERROR) << "Failed to initialize plugin install job"; - NOTREACHED(); - return false; - } - - InitializeResources(module_handle); - - DisplayStatus(IDS_DEFAULT_PLUGIN_GET_PLUGIN_MSG_NO_PLUGIN_NAME); - plugin_database_handler_.DownloadPluginsFileIfNeeded(plugin_finder_url_); - - return true; -} - -void PluginInstallerImpl::Shutdown() { - if (install_dialog_) { - install_dialog_->RemoveInstaller(this); - install_dialog_ = NULL; - } - - if (IsWindow(hwnd())) { - DestroyWindow(hwnd()); - } -} - -void PluginInstallerImpl::NewStream(NPStream* stream) { - plugin_install_stream_ = stream; -} - -void PluginInstallerImpl::DestroyStream(NPStream* stream, NPError reason) { - if (stream == plugin_install_stream_) - plugin_install_stream_ = NULL; -} - -bool PluginInstallerImpl::WriteReady(NPStream* stream) { - bool ready_to_accept_data = false; - - if (plugin_installer_state() != PluginListDownloadInitiated) { - DCHECK(default_plugin::g_browser); - DCHECK(default_plugin::g_browser->destroystream); - // We don't want any data, kill the stream. - default_plugin::g_browser->destroystream(instance_, stream, NPRES_DONE); - } - if (0 == lstrcmpiA(stream->url, plugin_finder_url_.c_str())) { - ready_to_accept_data = true; - } - return ready_to_accept_data; -} - -int32 PluginInstallerImpl::Write(NPStream* stream, int32 offset, - int32 buffer_length, void* buffer) { - if (plugin_installer_state() != PluginListDownloadInitiated) { - DCHECK(default_plugin::g_browser); - DCHECK(default_plugin::g_browser->destroystream); - // We don't want any data, kill the stream. - default_plugin::g_browser->destroystream(instance_, stream, NPRES_DONE); - return 0; - } - - return plugin_database_handler_.Write(stream, offset, buffer_length, buffer); -} - -void PluginInstallerImpl::ClearDisplay() { - enable_click_ = false; - command_.clear(); - optional_additional_message_.clear(); - get_plugin_link_message_.clear(); -} - -void PluginInstallerImpl::RefreshDisplay() { - if (!IsWindow(hwnd())) - return; - UpdateToolTip(); - - InvalidateRect(hwnd(), NULL, TRUE); - UpdateWindow(hwnd()); -} - -bool PluginInstallerImpl::CreateToolTip() { - DWORD ex_styles = IsRTLLayout() ? WS_EX_LAYOUTRTL : 0; - tooltip_ = CreateWindowEx(ex_styles, TOOLTIPS_CLASS, NULL, - WS_POPUP | TTS_ALWAYSTIP, - CW_USEDEFAULT, CW_USEDEFAULT, - CW_USEDEFAULT, CW_USEDEFAULT, - hwnd(), NULL, NULL, NULL); - if (!tooltip_) - return false; - - // Associate the ToolTip with the tool. - TOOLINFO tool_info = {0}; - tool_info.cbSize = sizeof(tool_info); - tool_info.hwnd = hwnd(); - tool_info.uFlags = TTF_IDISHWND | TTF_SUBCLASS; - tool_info.uId = reinterpret_cast<UINT_PTR>(hwnd()); - tool_info.lpszText = NULL; - SendMessage(tooltip_, TTM_ADDTOOL, 0, reinterpret_cast<LPARAM>(&tool_info)); - SendMessage(tooltip_, TTM_SETMAXTIPWIDTH, 0, TOOLTIP_MAX_WIDTH); - return true; -} - -void PluginInstallerImpl::UpdateToolTip() { - if (tooltip_ == NULL) - return; - std::wstring tip = command_; - if (!optional_additional_message_.empty()) - tip += std::wstring(L"\n\r") + optional_additional_message_; - - TOOLINFO tool_info = {0}; - tool_info.cbSize = sizeof(tool_info); - tool_info.hwnd = hwnd(); - tool_info.uFlags = TTF_IDISHWND; - tool_info.uId = reinterpret_cast<UINT_PTR>(hwnd()); - tool_info.lpszText = const_cast<LPWSTR>(tip.c_str()); - SendMessage(tooltip_, TTM_UPDATETIPTEXT, 0, (LPARAM)&tool_info); -} - -void PluginInstallerImpl::DisplayAvailablePluginStatus() { - ClearDisplay(); - enable_click_ = true; - command_ = ReplaceStringForPossibleEmptyReplacement( - IDS_DEFAULT_PLUGIN_GET_PLUGIN_MSG, - IDS_DEFAULT_PLUGIN_GET_PLUGIN_MSG_NO_PLUGIN_NAME, - plugin_name_); - optional_additional_message_ = - webkit_glue::GetLocalizedString(IDS_DEFAULT_PLUGIN_GET_PLUGIN_MSG_2); - get_plugin_link_message_ = webkit_glue::GetLocalizedString( - IDS_DEFAULT_PLUGIN_GET_THE_PLUGIN_BTN_MSG); - RefreshDisplay(); -} - -void PluginInstallerImpl::DisplayStatus(int message_resource_id) { - ClearDisplay(); - command_ = - webkit_glue::GetLocalizedString(message_resource_id); - RefreshDisplay(); -} - -void PluginInstallerImpl::DisplayPluginDownloadFailedStatus() { - ClearDisplay(); - command_ = webkit_glue::GetLocalizedString( - IDS_DEFAULT_PLUGIN_DOWNLOAD_FAILED_MSG); - command_ = ReplaceStringPlaceholders( - command_, - ASCIIToWide(plugin_download_url_), - NULL); - RefreshDisplay(); -} - -void PluginInstallerImpl::URLNotify(const char* url, NPReason reason) { - DCHECK(plugin_installer_state_ == PluginListDownloadInitiated); - - if (plugin_installer_state_ == PluginListDownloadInitiated) { - bool plugin_available = false; - if (reason == NPRES_DONE) { - DLOG(INFO) << "Received Done notification for plugin list download"; - plugin_database_handler_.ParsePluginList(); - if (plugin_database_handler_.GetPluginDetailsForMimeType( - mime_type_.c_str(), desired_language_.c_str(), - &plugin_download_url_, &plugin_name_, - &plugin_download_url_for_display_)) { - plugin_available = true; - install_dialog_ = PluginInstallDialog::AddInstaller(this, plugin_name_); - set_plugin_installer_state(PluginListDownloaded); - } else { - set_plugin_installer_state(PluginListDownloadedPluginNotFound); - } - - plugin_database_handler_.Close(false); - } else { - DLOG(WARNING) << "Failed to download plugin list"; - set_plugin_installer_state(PluginListDownloadFailed); - - plugin_database_handler_.Close(true); - } - - if (plugin_available) { - DLOG(INFO) << "Plugin available for mime type " << mime_type_; - DisplayAvailablePluginStatus(); - NotifyPluginStatus(default_plugin::MISSING_PLUGIN_AVAILABLE); - } else { - DLOG(WARNING) << "No plugin available for mime type " << mime_type_; - DisplayStatus(IDS_DEFAULT_PLUGIN_NO_PLUGIN_AVAILABLE_MSG); - } - } -} - -int16 PluginInstallerImpl::NPP_HandleEvent(void* event) { - 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 - // internal processing. So we need to check the status. - if (plugin_installer_state() == PluginListDownloaded) { - ShowInstallDialog(); - } - } - return 0; -} - -std::wstring PluginInstallerImpl::ReplaceStringForPossibleEmptyReplacement( - int message_id_with_placeholders, - int messsage_id_without_placeholders, - const std::wstring& replacement_string) { - // If the replacement_string is not empty, load the string identified by - // the resource id message_id_with_placeholders, and replace the - // placeholder with the replacement_string. Otherwise return the string - // identified by resource id messsage_id_without_placeholders. - if (replacement_string.empty()) { - return webkit_glue::GetLocalizedString(messsage_id_without_placeholders); - } else { - std::wstring string_with_placeholders = - webkit_glue::GetLocalizedString(message_id_with_placeholders); - return ReplaceStringPlaceholders(string_with_placeholders, - replacement_string, NULL); - } -} - -bool PluginInstallerImpl::NPP_SetWindow(NPWindow* window_info) { - HWND parent_window = reinterpret_cast<HWND>(window_info->window); - if (!IsWindow(parent_window)) { - // No window created yet. Ignore this call. - if (!IsWindow(hwnd())) - return true; - // Parent window has been destroyed. - Shutdown(); - return true; - } - - RECT parent_rect = {0}; - - if (IsWindow(hwnd())) { - GetClientRect(parent_window, &parent_rect); - SetWindowPos(hwnd(), NULL, parent_rect.left, parent_rect.top, - parent_rect.right - parent_rect.left, - parent_rect.bottom - parent_rect.top, SWP_SHOWWINDOW); - return true; - } - // First time in -- no window created by plugin yet. - GetClientRect(parent_window, &parent_rect); - set_window_style(WS_CHILD | WS_BORDER); - Init(parent_window, gfx::Rect(parent_rect)); - DCHECK(IsWindow(hwnd())); - installation_job_monitor_thread_->set_plugin_window(hwnd()); - - CreateToolTip(); - UpdateToolTip(); - - UpdateWindow(hwnd()); - ShowWindow(hwnd(), SW_SHOW); - - return true; -} - -void PluginInstallerImpl::DownloadPlugin() { - set_plugin_installer_state(PluginDownloadInitiated); - - DLOG(INFO) << "Initiating download for plugin URL " - << plugin_download_url_.c_str(); - - DisplayStatus(IDS_DEFAULT_PLUGIN_DOWNLOADING_PLUGIN_MSG); - - 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(); - } -} - -void PluginInstallerImpl::DownloadCancelled() { - DisplayAvailablePluginStatus(); -} - -LRESULT PluginInstallerImpl::OnEraseBackGround(UINT message, WPARAM wparam, - LPARAM lparam, BOOL& handled) { - HDC paint_device_context = reinterpret_cast<HDC>(wparam); - RECT erase_rect = {0}; - GetClipBox(paint_device_context, &erase_rect); - HBRUSH brush = ::CreateSolidBrush(RGB(252, 235, 162)); - DCHECK(brush); - FillRect(paint_device_context, &erase_rect, brush); - DeleteObject(brush); - return 1; -} - -// Use ICU in order to determine whether the locale is right-to-left. -// -// TODO(idana) bug# 1246452: there is already code in -// app/l10n_util.h/cc that uses ICU to determine the locale direction. We don't -// currently use this code since code in WebKit should not depend on code in -// Chrome. We can fix this by pulling (at least part of) the l10n_util -// functionality up into the Base module. -bool PluginInstallerImpl::IsRTLLayout() { - const icu::Locale& locale = icu::Locale::getDefault(); - const char* lang = locale.getLanguage(); - - // Check only for Arabic and Hebrew languages for now. - if (strcmp(lang, "ar") == 0 || strcmp(lang, "he") == 0) { - return true; - } - return false; -} - -LRESULT PluginInstallerImpl::OnPaint(UINT message, WPARAM wparam, LPARAM lparam, - BOOL& handled) { - PAINTSTRUCT paint_struct = {0}; - BeginPaint(hwnd(), &paint_struct); - - int save_dc_context = SaveDC(paint_struct.hdc); - // The drawing order is as below:- - // 1. The Get plugin link at the top left corner. - // 2. The plugin icon. - // 3. The text describing user actions to the right of the icon. - SIZE get_plugin_link_extents = {0}; - HFONT old_font = - reinterpret_cast<HFONT>(SelectObject(paint_struct.hdc, regular_font_)); - - GetTextExtentPoint32(paint_struct.hdc, get_plugin_link_message_.c_str(), - static_cast<int>(get_plugin_link_message_.length()), - &get_plugin_link_extents); - - POINT device_point = {0}; - device_point.x = get_plugin_link_extents.cx; - device_point.y = get_plugin_link_extents.cy; - LPtoDP(paint_struct.hdc, &device_point, 1); - - RECT text_rect = {0}; - text_rect.left = 5; - text_rect.right = text_rect.left + device_point.x; - text_rect.top = 5; - text_rect.bottom = text_rect.top + device_point.y; - - RECT client_rect = {0}; - GetClientRect(hwnd(), &client_rect); - - int icon_width = GetSystemMetrics(SM_CXICON); - int icon_height = GetSystemMetrics(SM_CYICON); - - int x = (client_rect.right / 2) - icon_width / 2; - int y = (client_rect.bottom / 2) - icon_height / 2; - - DCHECK(icon_); - DrawIcon(paint_struct.hdc, x, y, icon_); - - int old_mode = SetBkMode(paint_struct.hdc, TRANSPARENT); - COLORREF old_color = SetTextColor(paint_struct.hdc, RGB(0, 0, 255)); - - // If the UI layout is right-to-left, we need to mirror the position of the - // link text and also make sure that the text is aligned to the right. - DWORD draw_text_flags = DT_VCENTER; - if (IsRTLLayout()) { - draw_text_flags |= DT_RTLREADING | DT_RIGHT; - int text_width = text_rect.right - text_rect.left; - int client_width = client_rect.right - client_rect.left; - text_rect.left = client_width - text_rect.left - text_width; - text_rect.right = text_rect.left + text_width; - } else { - draw_text_flags |= DT_LEFT; - } - - DrawText(paint_struct.hdc, get_plugin_link_message_.c_str(), - static_cast<int>(get_plugin_link_message_.length()), - &text_rect, draw_text_flags); - - SIZE command_extents = {0}; - GetTextExtentPoint32(paint_struct.hdc, command_.c_str(), - static_cast<int>(command_.length()), &command_extents); - - int y_origin = y + (icon_height) + 10; - int x_origin = x - command_extents.cx / 2 + icon_width / 2; - - // If the window is too small then no point in attempting to display plugin - // information. In any case this info is displayed when the user hovers - // over the plugin window. - int window_width = client_rect.right - client_rect.left; - int window_height = client_rect.bottom - client_rect.top; - - if ((x_origin + command_extents.cx <= window_width) && - (y_origin + command_extents.cy <= window_height)) { - PaintUserActionInformation(paint_struct.hdc, x_origin, y_origin); - } - - RestoreDC(paint_struct.hdc, save_dc_context); - EndPaint(hwnd(), &paint_struct); - return 0; -} - -void PluginInstallerImpl::PaintUserActionInformation(HDC paint_dc, - int x_origin, - int y_origin) { - SelectObject(paint_dc, regular_font_); - - SIZE command_extents = {0}; - GetTextExtentPoint32(paint_dc, command_.c_str(), - static_cast<int>(command_.length()), &command_extents); - POINT device_point = {0}; - device_point.x = command_extents.cx; - device_point.y = command_extents.cy; - LPtoDP(paint_dc, &device_point, 1); - - RECT text_rect = {0}; - text_rect.left = x_origin; - text_rect.right = text_rect.left + device_point.x; - text_rect.top = y_origin; - text_rect.bottom = text_rect.top + device_point.y; - - SetTextColor(paint_dc, RGB(0, 0, 0)); - - // Make sure we pass the right BiDi flags to DrawText if the UI layout is - // right-to-left. - UINT additional_dt_flags = IsRTLLayout() ? DT_RTLREADING : 0; - DrawText(paint_dc, command_.c_str(), - static_cast<int>(command_.length()), &text_rect, - DT_CENTER | DT_VCENTER | additional_dt_flags); - - if (!optional_additional_message_.empty()) { - SelectObject(paint_dc, regular_font_); - - SIZE optional_text_extents = {0}; - int optional_message_length = - static_cast<int>(optional_additional_message_.length()); - GetTextExtentPoint32(paint_dc, - optional_additional_message_.c_str(), - optional_message_length, - &optional_text_extents); - POINT device_point = {0}; - device_point.x = optional_text_extents.cx; - device_point.y = optional_text_extents.cy; - LPtoDP(paint_dc, &device_point, 1); - - text_rect.right = text_rect.left + device_point.x; - text_rect.top = y_origin + command_extents.cy + 2; - text_rect.bottom = text_rect.top + device_point.y; - - DrawText(paint_dc, optional_additional_message_.c_str(), - static_cast<int>(optional_additional_message_.length()), - &text_rect, DT_CENTER | DT_VCENTER | additional_dt_flags); - } -} - -void PluginInstallerImpl::ShowInstallDialog() { - enable_click_ = false; - install_dialog_->ShowInstallDialog(hwnd()); -} - -LRESULT PluginInstallerImpl::OnLButtonDown(UINT message, WPARAM wparam, - LPARAM lparam, BOOL& handled) { - if (!enable_click_) - return 0; - if (plugin_installer_state() == PluginListDownloaded) { - ShowInstallDialog(); - NotifyPluginStatus(default_plugin::MISSING_PLUGIN_USER_STARTED_DOWNLOAD); - } else if (plugin_installer_state_ == PluginInstallerLaunchSuccess) { - DCHECK(default_plugin::g_browser); - DCHECK(default_plugin::g_browser->geturl); - default_plugin::g_browser->geturl( - instance_, - "javascript:navigator.plugins.refresh(true)", - "_self"); - default_plugin::g_browser->geturl( - instance_, - "javascript:window.location.reload(true)", - "_self"); - } - - return 0; -} - -LRESULT PluginInstallerImpl::OnSetCursor(UINT message, WPARAM wparam, - LPARAM lparam, BOOL& handled) { - if (enable_click_) { - SetCursor(LoadCursor(NULL, MAKEINTRESOURCE(IDC_HAND))); - return 1; - } - handled = FALSE; - return 0; -} - -LRESULT PluginInstallerImpl::OnRefreshPlugins(UINT message, WPARAM wparam, - LPARAM lparam, BOOL& handled) { - DCHECK(default_plugin::g_browser); - DCHECK(default_plugin::g_browser->geturl); - default_plugin::g_browser->geturl( - instance_, - "javascript:navigator.plugins.refresh(true)", - "_self"); - default_plugin::g_browser->geturl( - instance_, - "javascript:window.location.reload(true)", - "_self"); - return 0; -} - -LRESULT PluginInstallerImpl::OnCopyData(UINT message, WPARAM wparam, - LPARAM lparam, BOOL& handled) { - COPYDATASTRUCT* download_file_info = - reinterpret_cast<COPYDATASTRUCT*>(lparam); - if (!download_file_info || !download_file_info->dwData) { - DLOG(WARNING) << "Failed to download plugin"; - set_plugin_installer_state(PluginDownloadFailed); - DisplayPluginDownloadFailedStatus(); - } else { - DLOG(INFO) << "Successfully downloaded plugin installer"; - set_plugin_installer_state(PluginDownloadCompleted); - - std::wstring file_path = - reinterpret_cast<const wchar_t*>(download_file_info->lpData); - - FilePath current_directory = FilePath(file_path).DirName(); - - SHELLEXECUTEINFO shell_execute_info = {0}; - shell_execute_info.cbSize = sizeof(shell_execute_info); - shell_execute_info.fMask = SEE_MASK_NOCLOSEPROCESS; - shell_execute_info.lpFile = file_path.c_str(); - shell_execute_info.lpDirectory = current_directory.value().c_str(); - shell_execute_info.nShow = SW_SHOW; - - if (!ShellExecuteEx(&shell_execute_info)) { - DLOG(WARNING) << "Failed to launch plugin installer " - << file_path.c_str() << " Error " - << ::GetLastError(); - set_plugin_installer_state(PluginInstallerLaunchFailure); - DisplayStatus(IDS_DEFAULT_PLUGIN_INSTALLATION_FAILED_MSG); - NOTREACHED(); - } else { - DLOG(INFO) << "Successfully launched plugin installer"; - set_plugin_installer_state(PluginInstallerLaunchSuccess); - installation_job_monitor_thread_->AssignProcessToJob( - shell_execute_info.hProcess); - DisplayStatus(IDS_DEFAULT_PLUGIN_REFRESH_PLUGIN_MSG); - enable_click_ = true; - RefreshDisplay(); - } - } - return 0; -} - -bool PluginInstallerImpl::InitializeResources(HINSTANCE module_handle) { - DCHECK(icon_ == NULL); - DCHECK(regular_font_ == NULL); - DCHECK(bold_font_ == NULL); - DCHECK(underline_font_ == NULL); - - icon_ = LoadIcon(module_handle, MAKEINTRESOURCE(IDI_DEFAULT_PLUGIN_ICON)); - DCHECK(icon_ != NULL); - - desired_language_ = "en-us"; - regular_font_ = reinterpret_cast<HFONT>(GetStockObject(DEFAULT_GUI_FONT)); - DCHECK(regular_font_ != NULL); - - LOGFONT font_info = {0}; - GetObject(regular_font_, sizeof(LOGFONT), &font_info); - font_info.lfWeight |= FW_BOLD; - bold_font_ = CreateFontIndirect(&font_info); - DCHECK(bold_font_ != NULL); - - font_info.lfUnderline = TRUE; - underline_font_ = CreateFontIndirect(&font_info); - DCHECK(underline_font_ != NULL); - return true; -} - -void PluginInstallerImpl::NotifyPluginStatus(int status) { - default_plugin::g_browser->getvalue( - instance_, - static_cast<NPNVariable>( - default_plugin::kMissingPluginStatusStart + status), - NULL); -} diff --git a/chrome/default_plugin/plugin_impl_win.h b/chrome/default_plugin/plugin_impl_win.h deleted file mode 100644 index 24d1b22..0000000 --- a/chrome/default_plugin/plugin_impl_win.h +++ /dev/null @@ -1,317 +0,0 @@ -// Copyright (c) 2009 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. - -#ifndef CHROME_DEFAULT_PLUGIN_PLUGIN_IMPL_WIN_H_ -#define CHROME_DEFAULT_PLUGIN_PLUGIN_IMPL_WIN_H_ - -#include <string> -#include <vector> - -#include "chrome/default_plugin/install_dialog.h" -#include "chrome/default_plugin/plugin_database_handler.h" -#include "chrome/default_plugin/plugin_install_job_monitor.h" -#include "gfx/window_impl.h" -#include "third_party/npapi/bindings/npapi.h" - -// Possible plugin installer states. -enum PluginInstallerState { - PluginInstallerStateUndefined, - PluginListDownloadInitiated, - PluginListDownloaded, - PluginListDownloadedPluginNotFound, - PluginListDownloadFailed, - PluginDownloadInitiated, - PluginDownloadCompleted, - PluginDownloadFailed, - PluginInstallerLaunchSuccess, - PluginInstallerLaunchFailure -}; - -class PluginInstallDialog; -class PluginDatabaseHandler; - -// Provides the plugin installation functionality. This class is -// instantiated with the information like the mime type of the -// target plugin, the display mode, etc. -class PluginInstallerImpl : public gfx::WindowImpl { - public: - static const int kRefreshPluginsMessage = WM_APP + 1; - static const int kInstallMissingPluginMessage = WM_APP + 2; - - // mode is the plugin instantiation mode, i.e. whether it is a full - // page plugin (NP_FULL) or an embedded plugin (NP_EMBED) - explicit PluginInstallerImpl(int16 mode); - virtual ~PluginInstallerImpl(); - - BEGIN_MSG_MAP_EX(PluginInstallerImpl) - MESSAGE_HANDLER(WM_ERASEBKGND, OnEraseBackGround) - MESSAGE_HANDLER(WM_PAINT, OnPaint) - MESSAGE_HANDLER(WM_LBUTTONDOWN, OnLButtonDown) - MESSAGE_HANDLER(kRefreshPluginsMessage, OnRefreshPlugins) - MESSAGE_HANDLER(WM_COPYDATA, OnCopyData) - MESSAGE_HANDLER(WM_SETCURSOR, OnSetCursor) - END_MSG_MAP() - - // Initializes the plugin with the instance information, mime type - // and the list of parameters passed down to the plugin from the webpage. - // - // Parameters: - // module_handle - // The handle to the dll in which this object is instantiated. - // instance - // The plugins opaque instance handle. - // mime_type - // Identifies the third party plugin which would be eventually installed. - // argc - // Indicates the count of arguments passed in from the webpage. - // argv - // Pointer to the arguments. - // Returns true on success. - bool Initialize(HINSTANCE module_handle, NPP instance, NPMIMEType mime_type, - int16 argc, char* argn[], char* argv[]); - - // Displays the default plugin UI. - // - // Parameters: - // window_info - // The window info passed to npapi. - bool NPP_SetWindow(NPWindow* window_info); - - // Destroys the install dialog and the plugin window. - void Shutdown(); - - // Starts plugin download. Spawns the plugin installer after it is - // downloaded. - void DownloadPlugin(); - - // Indicates that the plugin download was cancelled. - void DownloadCancelled(); - - // Initializes the plugin download stream. - // - // Parameters: - // stream - // Pointer to the new stream being created. - void NewStream(NPStream* stream); - - // Uninitializes the plugin download stream. - // - // Parameters: - // stream - // Pointer to the stream being destroyed. - // reason - // Indicates why the stream is being destroyed. - // - void DestroyStream(NPStream* stream, NPError reason); - - // Determines whether the plugin is ready to accept data. - // We only accept data when we have initiated a download for the plugin - // database. - // - // Parameters: - // stream - // Pointer to the stream being destroyed. - // Returns true if the plugin is ready to accept data. - bool WriteReady(NPStream* stream); - - // Delivers data to the plugin instance. - // - // Parameters: - // stream - // Pointer to the stream being destroyed. - // offset - // Indicates the data offset. - // buffer_length - // Indicates the length of the data buffer. - // buffer - // Pointer to the actual buffer. - // Returns the number of bytes actually written, 0 on error. - int32 Write(NPStream* stream, int32 offset, int32 buffer_length, - void* buffer); - - // Handles notifications received in response to GetURLNotify calls issued - // by the plugin. - // - // Parameters: - // url - // Pointer to the URL. - // reason - // Describes why the notification was sent. - void URLNotify(const char* url, NPReason reason); - - // Used by the renderer to indicate plugin install through the infobar. - int16 NPP_HandleEvent(void* event); - - const std::string& mime_type() const { return mime_type_; } - - // Replaces a resource string with the placeholder passed in as an argument - // - // Parameters: - // message_id_with_placeholders - // The resource id of the string with placeholders. This is only used if - // the placeholder string (the replacement_string) parameter is valid. - // message_id_without_placeholders - // The resource id of the string to be returned if the placeholder is - // empty. - // replacement_string - // The placeholder which replaces tokens in the string identified by - // resource id message_id_with_placeholders. - // Returns a string which has the placeholders replaced, or the string - // without placeholders. - static std::wstring ReplaceStringForPossibleEmptyReplacement( - int message_id_with_placeholders, int message_id_without_placeholders, - const std::wstring& replacement_string); - - // Setter/getter combination to set and retreieve the current - // state of the plugin installer. - void set_plugin_installer_state(PluginInstallerState new_state) { - plugin_installer_state_ = new_state; - } - - PluginInstallerState plugin_installer_state() const { - return plugin_installer_state_; - } - - // Getter for the NPP instance member. - const NPP instance() const { - return instance_; - } - - // Returns whether or not the UI layout is right-to-left (such as Hebrew or - // Arabic). - static bool IsRTLLayout(); - - protected: - // Window message handlers. - LRESULT OnPaint(UINT message, WPARAM wparam, LPARAM lparam, BOOL& handled); - LRESULT OnEraseBackGround(UINT message, WPARAM wparam, LPARAM lparam, - BOOL& handled); - LRESULT OnLButtonDown(UINT message, WPARAM wparam, LPARAM lparam, - BOOL& handled); - LRESULT OnSetCursor(UINT message, WPARAM wparam, LPARAM lparam, - BOOL& handled); - - // Refreshes the loaded plugin list and reloads the current page. - LRESULT OnRefreshPlugins(UINT message, WPARAM wparam, LPARAM lparam, - BOOL& handled); - - // Launches the third party plugin installer. This message is - // received when the request to download the installer, initiated by - // plugin completes. - LRESULT OnCopyData(UINT message, WPARAM wparam, LPARAM lparam, BOOL& handled); - - // Displays the plugin install confirmation dialog. - void ShowInstallDialog(); - - // Clears the current display state. - void ClearDisplay(); - - // Displays the status message identified by the message resource id - // passed in. - // - // Parameters: - // message_resource_id parameter - // The resource id of the message to be displayed. - void DisplayStatus(int message_resource_id); - - // Displays status information for the third party plugin which is needed - // by the page. - void DisplayAvailablePluginStatus(); - - // Displays information related to third party plugin download failure. - void DisplayPluginDownloadFailedStatus(); - - // Enables the plugin window if required and initiates an update of the - // the plugin window. - void RefreshDisplay(); - - // Create tooltip window. - bool CreateToolTip(); - - // Update ToolTip text with the message shown inside the default plugin. - void UpdateToolTip(); - - // Initializes resources like the icon, fonts, etc needed by the plugin - // installer - // - // Parameters: - // module_handle - // Handle to the dll in which this object is instantiated. - // Returns true on success. - bool InitializeResources(HINSTANCE module_handle); - - // Paints user action messages to the plugin window. These include messages - // like whether the user should click on the plugin window to download the - // plugin, etc. - // - // Parameters: - // paint_dc - // The device context returned in BeginPaint. - // x_origin - // Horizontal reference point indicating where the text is to be displayed. - // y_origin - // Vertical reference point indicating where the text is to be displayed. - // - void PaintUserActionInformation(HDC paint_dc, int x_origin, int y_origin); - - private: - // Notify the renderer that plugin is available to download. - void NotifyPluginStatus(int status); - - // The plugins opaque instance handle - NPP instance_; - // The plugin instantiation mode (NP_FULL or NP_EMBED) - int16 mode_; - // The handle to the icon displayed in the plugin installation window. - HICON icon_; - // The Get plugin link message string displayed at the top left corner of - // the plugin window. - std::wstring get_plugin_link_message_; - // The command string displayed in the plugin installation window. - std::wstring command_; - // An additional message displayed at times by the plugin. - std::wstring optional_additional_message_; - // The current stream. - NPStream* plugin_install_stream_; - // The plugin finder URL. - std::string plugin_finder_url_; - // The desired mime type. - std::string mime_type_; - // The desired language. - std::string desired_language_; - // The plugin name. - std::wstring plugin_name_; - // The actual download URL. - std::string plugin_download_url_; - // Indicates if the plugin download URL points to an exe. - bool plugin_download_url_for_display_; - // The current state of the plugin installer. - PluginInstallerState plugin_installer_state_; - // Used to display the UI for plugin installation. - PluginInstallDialog* install_dialog_; - // To enable auto refresh of the plugin window once the installation - // is complete, we spawn the installation process in a job, and monitor - // IO completion events on the job. When the active process count of the - // job falls to zero, we initiate an auto refresh of the plugin list - // which enables the downloaded plugin to be instantiated. - // The completion events from the job are monitored in an independent - // thread. - scoped_refptr<PluginInstallationJobMonitorThread> - installation_job_monitor_thread_; - // This object handles download and parsing of the plugins database. - PluginDatabaseHandler plugin_database_handler_; - // Indicates if the left click to download/refresh should be enabled or not. - bool enable_click_; - // Handles to the fonts used to display text in the plugin window. - HFONT bold_font_; - HFONT regular_font_; - HFONT underline_font_; - // Tooltip Window. - HWND tooltip_; - - DISALLOW_COPY_AND_ASSIGN(PluginInstallerImpl); -}; - - -#endif // CHROME_DEFAULT_PLUGIN_PLUGIN_IMPL_WIN_H_ diff --git a/chrome/default_plugin/plugin_install_job_monitor.cc b/chrome/default_plugin/plugin_install_job_monitor.cc deleted file mode 100644 index d0088eb..0000000 --- a/chrome/default_plugin/plugin_install_job_monitor.cc +++ /dev/null @@ -1,106 +0,0 @@ -// Copyright (c) 2010 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. - -#include "chrome/default_plugin/plugin_install_job_monitor.h" - -#include "base/message_loop.h" -#include "chrome/default_plugin/plugin_impl.h" - -PluginInstallationJobMonitorThread::PluginInstallationJobMonitorThread() - : Thread("Chrome plugin install thread"), - install_job_completion_port_(NULL), - stop_job_monitoring_(false), - plugin_window_(NULL), - install_job_(NULL) { -} - -PluginInstallationJobMonitorThread::~PluginInstallationJobMonitorThread() { - if (install_job_) { - ::CloseHandle(install_job_); - install_job_ = NULL; - } -} - -bool PluginInstallationJobMonitorThread::Initialize() { - DCHECK(install_job_ == NULL); - - install_job_ = ::CreateJobObject(NULL, NULL); - if (install_job_ == NULL) { - DLOG(ERROR) << "Failed to create plugin install job. Error = " - << ::GetLastError(); - NOTREACHED(); - return false; - } - - return Start(); -} - -void PluginInstallationJobMonitorThread::Init() { - this->message_loop()->PostTask(FROM_HERE, - NewRunnableMethod(this, - &PluginInstallationJobMonitorThread::WaitForJobThread)); -} - -void PluginInstallationJobMonitorThread::WaitForJobThread() { - if (!install_job_) { - DLOG(WARNING) << "Invalid job information"; - NOTREACHED(); - return; - } - - DCHECK(install_job_completion_port_ == NULL); - - install_job_completion_port_ = - ::CreateIoCompletionPort(INVALID_HANDLE_VALUE, NULL, - reinterpret_cast<ULONG_PTR>(install_job_), 0); - DCHECK(install_job_completion_port_ != NULL); - - JOBOBJECT_ASSOCIATE_COMPLETION_PORT job_completion_port = {0}; - job_completion_port.CompletionKey = install_job_; - job_completion_port.CompletionPort = install_job_completion_port_; - - if (!SetInformationJobObject(install_job_, - JobObjectAssociateCompletionPortInformation, - &job_completion_port, - sizeof(job_completion_port))) { - DLOG(WARNING) << "Failed to associate completion port with job object.Err " - << ::GetLastError(); - NOTREACHED(); - return; - } - - while (!stop_job_monitoring_) { - unsigned long job_event = 0; - unsigned long completion_key = 0; - LPOVERLAPPED overlapped = NULL; - - if (::GetQueuedCompletionStatus( - install_job_completion_port_, &job_event, - &completion_key, &overlapped, INFINITE)) { - if (job_event == JOB_OBJECT_MSG_ACTIVE_PROCESS_ZERO) { - DLOG(INFO) << "All processes in the installer job have exited."; - DLOG(INFO) << "Initiating refresh on the plugins list"; - DCHECK(::IsWindow(plugin_window_)); - PostMessageW(plugin_window_, - PluginInstallerImpl::kRefreshPluginsMessage, 0, 0); - } - } - } -} - -void PluginInstallationJobMonitorThread::Stop() { - stop_job_monitoring_ = true; - ::PostQueuedCompletionStatus( - install_job_completion_port_, JOB_OBJECT_MSG_END_OF_JOB_TIME, - reinterpret_cast<ULONG_PTR>(install_job_), NULL); - Thread::Stop(); - ::CloseHandle(install_job_completion_port_); - install_job_completion_port_ = NULL; -} - -bool PluginInstallationJobMonitorThread::AssignProcessToJob( - HANDLE process_handle) { - BOOL result = AssignProcessToJobObject(install_job_, process_handle); - return result ? true : false; -} diff --git a/chrome/default_plugin/plugin_install_job_monitor.h b/chrome/default_plugin/plugin_install_job_monitor.h deleted file mode 100644 index 271d4eb..0000000 --- a/chrome/default_plugin/plugin_install_job_monitor.h +++ /dev/null @@ -1,81 +0,0 @@ -// Copyright (c) 2010 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. - -#ifndef CHROME_DEFAULT_PLUGIN_PLUGIN_INSTALL_JOB_MONITOR_H_ -#define CHROME_DEFAULT_PLUGIN_PLUGIN_INSTALL_JOB_MONITOR_H_ - -#include <windows.h> - -#include "base/logging.h" -#include "base/thread.h" -#include "base/ref_counted.h" - -// Provides the plugin installation job monitoring functionality. -// The PluginInstallationJobMonitorThread class represents a background -// thread which monitors the install job completion port which is associated -// with the job when an instance of this class is initialized. -class PluginInstallationJobMonitorThread : - public base::Thread, - public base::RefCountedThreadSafe<PluginInstallationJobMonitorThread> { - - public: - PluginInstallationJobMonitorThread(); - - // Initializes the plugin install job. This involves creating the job object - // and starting the thread which monitors the job completion port. - // Returns true on success. - bool Initialize(); - - // Stops job monitoring and invokes the base Stop function. - void Stop(); - - // Simple setter/getters for the plugin window handle. - void set_plugin_window(HWND plugin_window) { - DCHECK(::IsWindow(plugin_window)); - plugin_window_ = plugin_window; - } - - HWND plugin_window() const { - return plugin_window_; - } - - // Adds a process to the job object. - // - // Parameters: - // process_handle - // Handle to the process which is to be added to the plugin install job. - // Returns true on success. - bool AssignProcessToJob(HANDLE process_handle); - - protected: - // Installs a task on our thread to call WaitForJobThread(). We - // can't call it directly since we would deadlock (thread which - // creates me blocks until Start() returns, and Start() doesn't - // return until Init() does). - virtual void Init(); - - // Blocks on the plugin installation job completion port by invoking the - // GetQueuedCompletionStatus API. - // We return from this function when the job monitoring thread is stopped. - virtual void WaitForJobThread(); - - private: - friend class base::RefCountedThreadSafe<PluginInstallationJobMonitorThread>; - - virtual ~PluginInstallationJobMonitorThread(); - - // The install job completion port. Created in Init. - HANDLE install_job_completion_port_; - // Indicates that job monitoring is to be stopped - bool stop_job_monitoring_; - // The install job. Should be created before the job monitor thread - // is started. - HANDLE install_job_; - // The plugin window handle. - HWND plugin_window_; - - DISALLOW_COPY_AND_ASSIGN(PluginInstallationJobMonitorThread); -}; - -#endif // CHROME_DEFAULT_PLUGIN_PLUGIN_INSTALL_JOB_MONITOR_H_ diff --git a/chrome/default_plugin/plugin_main.cc b/chrome/default_plugin/plugin_main.cc deleted file mode 100644 index faf6c82..0000000 --- a/chrome/default_plugin/plugin_main.cc +++ /dev/null @@ -1,336 +0,0 @@ -// Copyright (c) 2006-2008 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. - -#include "chrome/default_plugin/plugin_main.h" - -#include "base/logging.h" -#include "base/string_util.h" -#include "chrome/default_plugin/plugin_impl.h" -#include "webkit/glue/webkit_glue.h" - -namespace default_plugin { - -#if defined(OS_WIN) -// -// Forward declare the linker-provided pseudo variable for the -// current module handle. -// -extern "C" IMAGE_DOS_HEADER __ImageBase; - -// get the handle to the currently executing module -inline HMODULE GetCurrentModuleHandle() { - return reinterpret_cast<HINSTANCE>(&__ImageBase); -} -#endif - -// Initialized in NP_Initialize. -NPNetscapeFuncs* g_browser = NULL; - -NPError API_CALL NP_GetEntryPoints(NPPluginFuncs* funcs) { - // Be explicit about the namespace, because all internal plugins have - // functions with these names and some might accidentally put them into the - // global namespace. In that case, the linker might prefer the global one. - funcs->version = 11; - funcs->size = sizeof(*funcs); - funcs->newp = default_plugin::NPP_New; - funcs->destroy = default_plugin::NPP_Destroy; - funcs->setwindow = default_plugin::NPP_SetWindow; - funcs->newstream = default_plugin::NPP_NewStream; - funcs->destroystream = default_plugin::NPP_DestroyStream; - funcs->writeready = default_plugin::NPP_WriteReady; - funcs->write = default_plugin::NPP_Write; - funcs->asfile = NULL; - funcs->print = NULL; - funcs->event = default_plugin::NPP_HandleEvent; - funcs->urlnotify = default_plugin::NPP_URLNotify; -#if defined(OS_POSIX) && !defined(OS_MACOSX) - funcs->getvalue = default_plugin::NPP_GetValue; -#else - funcs->getvalue = NULL; -#endif - funcs->setvalue = NULL; - return NPERR_NO_ERROR; -} - -NPError API_CALL NP_Initialize(NPNetscapeFuncs* funcs) { - g_browser = funcs; - return 0; -} - -#if defined(OS_POSIX) && !defined(OS_MACOSX) -NPError API_CALL NP_Initialize(NPNetscapeFuncs* funcs, NPPluginFuncs* p_funcs) { - NPError err = NP_Initialize(funcs); - if (err != NPERR_NO_ERROR) - return err; - return NP_GetEntryPoints(p_funcs); -} -#endif - -NPError API_CALL NP_Shutdown(void) { - g_browser = NULL; - return NPERR_NO_ERROR; -} - -namespace { -// This function is only invoked when the default plugin is invoked -// with a special mime type application/chromium-test-default-plugin -void SignalTestResult(NPP instance) { - NPObject *window_obj = NULL; - g_browser->getvalue(instance, NPNVWindowNPObject, &window_obj); - if (!window_obj) { - NOTREACHED(); - return; - } - - std::string script = "javascript:onSuccess()"; - NPString script_string; - script_string.UTF8Characters = script.c_str(); - script_string.UTF8Length = - static_cast<unsigned int>(script.length()); - - NPVariant result_var; - g_browser->evaluate(instance, window_obj, - &script_string, &result_var); - g_browser->releaseobject(window_obj); -} - -} // namespace CHROMIUM_DefaultPluginTest - -bool NegotiateModels(NPP instance) { -#if defined(OS_MACOSX) - NPError err; - // Set drawing model to core graphics - NPBool supportsCoreGraphics = false; - err = g_browser->getvalue(instance, - NPNVsupportsCoreGraphicsBool, - &supportsCoreGraphics); - if (err != NPERR_NO_ERROR || !supportsCoreGraphics) { - NOTREACHED(); - return false; - } - err = g_browser->setvalue(instance, - NPPVpluginDrawingModel, - (void*)NPDrawingModelCoreGraphics); - if (err != NPERR_NO_ERROR) { - NOTREACHED(); - return false; - } - - // Set event model to cocoa - NPBool supportsCocoaEvents = false; - err = g_browser->getvalue(instance, - NPNVsupportsCocoaBool, - &supportsCocoaEvents); - if (err != NPERR_NO_ERROR || !supportsCocoaEvents) { - NOTREACHED(); - return false; - } - err = g_browser->setvalue(instance, - NPPVpluginEventModel, - (void*)NPEventModelCocoa); - if (err != NPERR_NO_ERROR) { - NOTREACHED(); - return false; - } -#elif defined(OS_POSIX) - NPError err; - // Check that chrome still supports xembed. - NPBool supportsXEmbed = false; - err = g_browser->getvalue(instance, - NPNVSupportsXEmbedBool, - &supportsXEmbed); - if (err != NPERR_NO_ERROR || !supportsXEmbed) { - NOTREACHED(); - return false; - } - - // Check that the toolkit is still gtk2. - NPNToolkitType toolkit; - err = g_browser->getvalue(instance, - NPNVToolkit, - &toolkit); - if (err != NPERR_NO_ERROR || toolkit != NPNVGtk2) { - NOTREACHED(); - return false; - } -#endif - return true; -} - -NPError NPP_New(NPMIMEType plugin_type, NPP instance, uint16_t mode, int16_t argc, - char* argn[], char* argv[], NPSavedData* saved) { - if (instance == NULL) - return NPERR_INVALID_INSTANCE_ERROR; - - // We don't want the null plugin to work in the following cases:- - // 1. Test-shell - // 2. The plugin is running in the renderer process. - if (webkit_glue::IsPluginRunningInRendererProcess()) { - return NPERR_GENERIC_ERROR; - } - - if (!NegotiateModels(instance)) - return NPERR_INCOMPATIBLE_VERSION_ERROR; - - PluginInstallerImpl* plugin_impl = new PluginInstallerImpl(mode); - plugin_impl->Initialize( -#if defined(OS_WIN) - GetCurrentModuleHandle(), -#else - NULL, -#endif - instance, plugin_type, argc, - argn, argv); - - instance->pdata = reinterpret_cast<void*>(plugin_impl); - - if (!base::strcasecmp(plugin_type, - "application/chromium-test-default-plugin")) { - SignalTestResult(instance); - } - - return NPERR_NO_ERROR; -} - -NPError NPP_Destroy(NPP instance, NPSavedData** save) { - PluginInstallerImpl* plugin_impl = - reinterpret_cast<PluginInstallerImpl*>(instance->pdata); - - if (plugin_impl) { - plugin_impl->Shutdown(); - delete plugin_impl; - } - - return NPERR_NO_ERROR; -} - -NPError NPP_SetWindow(NPP instance, NPWindow* window_info) { - if (instance == NULL) - return NPERR_INVALID_INSTANCE_ERROR; - - if (window_info == NULL) { - NOTREACHED(); - return NPERR_GENERIC_ERROR; - } - - PluginInstallerImpl* plugin_impl = - reinterpret_cast<PluginInstallerImpl*>(instance->pdata); - - if (plugin_impl == NULL) { - NOTREACHED(); - return NPERR_GENERIC_ERROR; - } - - if (!plugin_impl->NPP_SetWindow(window_info)) { - delete plugin_impl; - return NPERR_GENERIC_ERROR; - } - - return NPERR_NO_ERROR; -} - -NPError NPP_NewStream(NPP instance, NPMIMEType type, NPStream* stream, - NPBool seekable, uint16_t* stype) { - if (instance == NULL) - return NPERR_INVALID_INSTANCE_ERROR; - - PluginInstallerImpl* plugin_impl = - reinterpret_cast<PluginInstallerImpl*>(instance->pdata); - - if (!plugin_impl) { - NOTREACHED(); - return NPERR_INVALID_INSTANCE_ERROR; - } - - plugin_impl->NewStream(stream); - return NPERR_NO_ERROR; -} - -NPError NPP_DestroyStream(NPP instance, NPStream* stream, NPReason reason) { - if (instance == NULL) - return NPERR_INVALID_INSTANCE_ERROR; - - PluginInstallerImpl* plugin_impl = - reinterpret_cast<PluginInstallerImpl*>(instance->pdata); - - if (!plugin_impl) { - NOTREACHED(); - return NPERR_INVALID_INSTANCE_ERROR; - } - - plugin_impl->DestroyStream(stream, reason); - return NPERR_NO_ERROR; -} - -int32_t NPP_WriteReady(NPP instance, NPStream* stream) { - if (instance == NULL) - return 0; - - PluginInstallerImpl* plugin_impl = - reinterpret_cast<PluginInstallerImpl*>(instance->pdata); - - if (!plugin_impl) { - NOTREACHED(); - return 0; - } - - if (plugin_impl->WriteReady(stream)) - return 0x7FFFFFFF; - return 0; -} - -int32_t NPP_Write(NPP instance, NPStream* stream, int32_t offset, int32_t len, - void* buffer) { - if (instance == NULL) - return 0; - - PluginInstallerImpl* plugin_impl = - reinterpret_cast<PluginInstallerImpl*>(instance->pdata); - - if (!plugin_impl) { - NOTREACHED(); - return 0; - } - - return plugin_impl->Write(stream, offset, len, buffer); -} - -void NPP_URLNotify(NPP instance, const char* url, NPReason reason, - void* notifyData) { - if (instance != NULL) { - PluginInstallerImpl* plugin_impl = - reinterpret_cast<PluginInstallerImpl*>(instance->pdata); - - if (!plugin_impl) { - NOTREACHED(); - return; - } - - plugin_impl->URLNotify(url, reason); - } -} - -#if defined(OS_POSIX) && !defined(OS_MACOSX) -NPError NPP_GetValue(NPP instance, NPPVariable variable, void* value) { - switch (variable) { - case NPPVpluginNeedsXEmbed: - *static_cast<NPBool*>(value) = true; - return NPERR_NO_ERROR; - default: - return NPERR_INVALID_PARAM; - } -} -#endif - -int16_t NPP_HandleEvent(NPP instance, void* event) { - if (instance == NULL) - return 0; - - PluginInstallerImpl* plugin_impl = - reinterpret_cast<PluginInstallerImpl*>(instance->pdata); - - return plugin_impl->NPP_HandleEvent(event); -} - -} // default_plugin diff --git a/chrome/default_plugin/plugin_main.h b/chrome/default_plugin/plugin_main.h deleted file mode 100644 index 50f3009..0000000 --- a/chrome/default_plugin/plugin_main.h +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright (c) 2010 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. - -#include <algorithm> -#include <string> - -#include "third_party/npapi/bindings/npapi.h" -#include "third_party/npapi/bindings/nphostapi.h" - -namespace default_plugin { - -extern NPNetscapeFuncs* g_browser; - -// Standard NPAPI functions. -NPError NPP_New(NPMIMEType pluginType, NPP instance, uint16_t mode, int16_t argc, - char* argn[], char* argv[], NPSavedData* saved); -NPError NPP_Destroy(NPP instance, NPSavedData** save); -NPError NPP_SetWindow(NPP instance, NPWindow* window); -NPError NPP_NewStream(NPP instance, NPMIMEType type, NPStream* stream, - NPBool seekable, uint16_t* stype); -NPError NPP_DestroyStream(NPP instance, NPStream* stream, NPReason reason); -int32_t NPP_WriteReady(NPP instance, NPStream* stream); -int32_t NPP_Write(NPP instance, NPStream* stream, int32_t offset, int32_t len, - void* buffer); -#if defined(OS_POSIX) && !defined(OS_MACOSX) -NPError NPP_GetValue(NPP instance, NPPVariable variable, void* value); -#endif -void NPP_URLNotify(NPP instance, const char* url, NPReason reason, - void* notifyData); -int16_t NPP_HandleEvent(NPP instance, void* event); - -#if defined(OS_POSIX) && !defined(OS_MACOSX) -NPError API_CALL NP_Initialize(NPNetscapeFuncs* funcs, NPPluginFuncs* p_funcs); -#else -NPError API_CALL NP_GetEntryPoints(NPPluginFuncs* funcs); -NPError API_CALL NP_Initialize(NPNetscapeFuncs* funcs); -#endif -NPError API_CALL NP_Shutdown(void); - -} // default_plugin diff --git a/chrome/default_plugin/plugins.xml b/chrome/default_plugin/plugins.xml deleted file mode 100644 index 8799ca9..0000000 --- a/chrome/default_plugin/plugins.xml +++ /dev/null @@ -1,653 +0,0 @@ -<plugins> - <plugin> - <mime>application/x-java-applet</mime> - <lang>en-us</lang> - <name>Java(TM) Platform SE6 U10 (Beta)</name> - <url>http://javadl.sun.com/webapps/download/GetFile/1.6.0_10-b33/windows-i586/jre-6u10-windows-i586-p-iftw.exe</url> - </plugin> - - <plugin> - <mime>application/x-java-bean</mime> - <lang>en-us</lang> - <name>Java(TM) Platform SE6 U10 (Beta)</name> - <url>http://javadl.sun.com/webapps/download/GetFile/1.6.0_10-b33/windows-i586/jre-6u10-windows-i586-p-iftw.exe</url> - </plugin> - - <plugin> - <mime>application/x-java-vm</mime> - <lang>en-us</lang> - <name>Java(TM) Platform SE6 U10 (Beta)</name> - <url>http://javadl.sun.com/webapps/download/GetFile/1.6.0_10-b33/windows-i586/jre-6u10-windows-i586-p-iftw.exe</url> - </plugin> - - <plugin> - <mime>application/x-java-applet,version=1.1.1</mime> - <lang>en-us</lang> - <name>Java(TM) Platform SE6 U10 (Beta)</name> - <url>http://javadl.sun.com/webapps/download/GetFile/1.6.0_10-b33/windows-i586/jre-6u10-windows-i586-p-iftw.exe</url> - </plugin> - - <plugin> - <mime>application/x-java-bean,version=1.1.1</mime> - <lang>en-us</lang> - <name>Java(TM) Platform SE6 U10 (Beta)</name> - <url>http://javadl.sun.com/webapps/download/GetFile/1.6.0_10-b33/windows-i586/jre-6u10-windows-i586-p-iftw.exe</url> - </plugin> - - <plugin> - <mime>application/x-java-applet,version=1.1</mime> - <lang>en-us</lang> - <name>Java(TM) Platform SE6 U10 (Beta)</name> - <url>http://javadl.sun.com/webapps/download/GetFile/1.6.0_10-b33/windows-i586/jre-6u10-windows-i586-p-iftw.exe</url> - </plugin> - - <plugin> - <mime>application/x-java-bean,version=1.1</mime> - <lang>en-us</lang> - <name>Java(TM) Platform SE6 U10 (Beta)</name> - <url>http://javadl.sun.com/webapps/download/GetFile/1.6.0_10-b33/windows-i586/jre-6u10-windows-i586-p-iftw.exe</url> - </plugin> - - <plugin> - <mime>application/x-java-applet,version=1.2</mime> - <lang>en-us</lang> - <name>Java(TM) Platform SE6 U10 (Beta)</name> - <url>http://javadl.sun.com/webapps/download/GetFile/1.6.0_10-b33/windows-i586/jre-6u10-windows-i586-p-iftw.exe</url> - </plugin> - - <plugin> - <mime>application/x-java-bean,version=1.2</mime> - <lang>en-us</lang> - <name>Java(TM) Platform SE6 U10 (Beta)</name> - <url>http://javadl.sun.com/webapps/download/GetFile/1.6.0_10-b33/windows-i586/jre-6u10-windows-i586-p-iftw.exe</url> - </plugin> - - <plugin> - <mime>application/x-java-applet,version=1.1.3</mime> - <lang>en-us</lang> - <name>Java(TM) Platform SE6 U10 (Beta)</name> - <url>http://javadl.sun.com/webapps/download/GetFile/1.6.0_10-b33/windows-i586/jre-6u10-windows-i586-p-iftw.exe</url> - </plugin> - - <plugin> - <mime>application/x-java-bean,version=1.1.3</mime> - <lang>en-us</lang> - <name>Java(TM) Platform SE6 U10 (Beta)</name> - <url>http://javadl.sun.com/webapps/download/GetFile/1.6.0_10-b33/windows-i586/jre-6u10-windows-i586-p-iftw.exe</url> - </plugin> - - <plugin> - <mime>application/x-java-applet,version=1.1.2</mime> - <lang>en-us</lang> - <name>Java(TM) Platform SE6 U10 (Beta)</name> - <url>http://javadl.sun.com/webapps/download/GetFile/1.6.0_10-b33/windows-i586/jre-6u10-windows-i586-p-iftw.exe</url> - </plugin> - - <plugin> - <mime>application/x-java-bean,version=1.1.2</mime> - <lang>en-us</lang> - <name>Java(TM) Platform SE6 U10 (Beta)</name> - <url>http://javadl.sun.com/webapps/download/GetFile/1.6.0_10-b33/windows-i586/jre-6u10-windows-i586-p-iftw.exe</url> - </plugin> - - <plugin> - <mime>application/x-java-applet,version=1.3</mime> - <lang>en-us</lang> - <name>Java(TM) Platform SE6 U10 (Beta)</name> - <url>http://javadl.sun.com/webapps/download/GetFile/1.6.0_10-b33/windows-i586/jre-6u10-windows-i586-p-iftw.exe</url> - </plugin> - - <plugin> - <mime>application/x-java-bean,version=1.3</mime> - <lang>en-us</lang> - <name>Java(TM) Platform SE6 U10 (Beta)</name> - <url>http://javadl.sun.com/webapps/download/GetFile/1.6.0_10-b33/windows-i586/jre-6u10-windows-i586-p-iftw.exe</url> - </plugin> - - <plugin> - <mime>application/x-java-applet,version=1.2.2</mime> - <lang>en-us</lang> - <name>Java(TM) Platform SE6 U10 (Beta)</name> - <url>http://javadl.sun.com/webapps/download/GetFile/1.6.0_10-b33/windows-i586/jre-6u10-windows-i586-p-iftw.exe</url> - </plugin> - - <plugin> - <mime>application/x-java-bean,version=1.2.2</mime> - <lang>en-us</lang> - <name>Java(TM) Platform SE6 U10 (Beta)</name> - <url>http://javadl.sun.com/webapps/download/GetFile/1.6.0_10-b33/windows-i586/jre-6u10-windows-i586-p-iftw.exe</url> - </plugin> - - <plugin> - <mime>application/x-java-applet,version=1.2.1</mime> - <lang>en-us</lang> - <name>Java(TM) Platform SE6 U10 (Beta)</name> - <url>http://javadl.sun.com/webapps/download/GetFile/1.6.0_10-b33/windows-i586/jre-6u10-windows-i586-p-iftw.exe</url> - </plugin> - - <plugin> - <mime>application/x-java-bean,version=1.2.1</mime> - <lang>en-us</lang> - <name>Java(TM) Platform SE6 U10 (Beta)</name> - <url>http://javadl.sun.com/webapps/download/GetFile/1.6.0_10-b33/windows-i586/jre-6u10-windows-i586-p-iftw.exe</url> - </plugin> - - <plugin> - <mime>application/x-java-applet,version=1.3.1</mime> - <lang>en-us</lang> - <name>Java(TM) Platform SE6 U10 (Beta)</name> - <url>http://javadl.sun.com/webapps/download/GetFile/1.6.0_10-b33/windows-i586/jre-6u10-windows-i586-p-iftw.exe</url> - </plugin> - - <plugin> - <mime>application/x-java-bean,version=1.3.1</mime> - <lang>en-us</lang> - <name>Java(TM) Platform SE6 U10 (Beta)</name> - <url>http://javadl.sun.com/webapps/download/GetFile/1.6.0_10-b33/windows-i586/jre-6u10-windows-i586-p-iftw.exe</url> - </plugin> - - <plugin> - <mime>application/x-java-applet,version=1.4</mime> - <lang>en-us</lang> - <name>Java(TM) Platform SE6 U10 (Beta)</name> - <url>http://javadl.sun.com/webapps/download/GetFile/1.6.0_10-b33/windows-i586/jre-6u10-windows-i586-p-iftw.exe</url> - </plugin> - - <plugin> - <mime>application/x-java-bean,version=1.4</mime> - <lang>en-us</lang> - <name>Java(TM) Platform SE6 U10 (Beta)</name> - <url>http://javadl.sun.com/webapps/download/GetFile/1.6.0_10-b33/windows-i586/jre-6u10-windows-i586-p-iftw.exe</url> - </plugin> - - <plugin> - <mime>application/x-java-applet,version=1.4.1</mime> - <lang>en-us</lang> - <name>Java(TM) Platform SE6 U10 (Beta)</name> - <url>http://javadl.sun.com/webapps/download/GetFile/1.6.0_10-b33/windows-i586/jre-6u10-windows-i586-p-iftw.exe</url> - </plugin> - - <plugin> - <mime>application/x-java-bean,version=1.4.1</mime> - <lang>en-us</lang> - <name>Java(TM) Platform SE6 U10 (Beta)</name> - <url>http://javadl.sun.com/webapps/download/GetFile/1.6.0_10-b33/windows-i586/jre-6u10-windows-i586-p-iftw.exe</url> - </plugin> - - <plugin> - <mime>application/x-java-applet,version=1.4.2</mime> - <lang>en-us</lang> - <name>Java(TM) Platform SE6 U10 (Beta)</name> - <url>http://javadl.sun.com/webapps/download/GetFile/1.6.0_10-b33/windows-i586/jre-6u10-windows-i586-p-iftw.exe</url> - </plugin> - - <plugin> - <mime>application/x-java-bean,version=1.4.2</mime> - <lang>en-us</lang> - <name>Java(TM) Platform SE6 U10 (Beta)</name> - <url>http://javadl.sun.com/webapps/download/GetFile/1.6.0_10-b33/windows-i586/jre-6u10-windows-i586-p-iftw.exe</url> - </plugin> - - <plugin> - <mime>application/x-java-applet,version=1.5</mime> - <lang>en-us</lang> - <name>Java(TM) Platform SE6 U10 (Beta)</name> - <url>http://javadl.sun.com/webapps/download/GetFile/1.6.0_10-b33/windows-i586/jre-6u10-windows-i586-p-iftw.exe</url> - </plugin> - - <plugin> - <mime>application/x-java-bean,version=1.5</mime> - <lang>en-us</lang> - <name>Java(TM) Platform SE6 U10 (Beta)</name> - <url>http://javadl.sun.com/webapps/download/GetFile/1.6.0_10-b33/windows-i586/jre-6u10-windows-i586-p-iftw.exe</url> - </plugin> - - <plugin> - <mime>application/x-java-applet,version=1.6</mime> - <lang>en-us</lang> - <name>Java(TM) Platform SE6 U10 (Beta)</name> - <url>http://javadl.sun.com/webapps/download/GetFile/1.6.0_10-b33/windows-i586/jre-6u10-windows-i586-p-iftw.exe</url> - </plugin> - - <plugin> - <mime>application/x-java-bean,version=1.6</mime> - <lang>en-us</lang> - <name>Java(TM) Platform SE6 U10 (Beta)</name> - <url>http://javadl.sun.com/webapps/download/GetFile/1.6.0_10-b33/windows-i586/jre-6u10-windows-i586-p-iftw.exe</url> - </plugin> - - <plugin> - <mime>audio/x-pn-realaudio-plugin</mime> - <lang>en-us</lang> - <name>Real player</name> - <url>http://software-dl.real.com/free/windows/installer/R41R02F/RealPlayer11GOLD.exe</url> - </plugin> - - <plugin> - <mime>audio/x-pn-realaudio</mime> - <lang>en-us</lang> - <name>Real player</name> - <url>http://software-dl.real.com/free/windows/installer/R41R02F/RealPlayer11GOLD.exe</url> - </plugin> - - <plugin> - <mime>audio/vnd.rn-realaudio</mime> - <lang>en-us</lang> - <name>Real player</name> - <url>http://software-dl.real.com/free/windows/installer/R41R02F/RealPlayer11GOLD.exe</url> - </plugin> - - <plugin> - <mime>video/vnd.rn-realvideo</mime> - <lang>en-us</lang> - <name>Real player</name> - <url>http://software-dl.real.com/free/windows/installer/R41R02F/RealPlayer11GOLD.exe</url> - </plugin> - - <plugin> - <mime>application/x-shockwave-flash</mime> - <lang>en-us</lang> - <name>Adobe Flash Movie</name> - <url>http://fpdownload.macromedia.com/get/flashplayer/current/install_flash_player.exe</url> - </plugin> - - <plugin> - <mime>application/futuresplash</mime> - <lang>en-us</lang> - <name>Adobe FutureSpash Movie</name> - <url>http://fpdownload.macromedia.com/get/flashplayer/current/install_flash_player.exe</url> - </plugin> - - <plugin> - <mime>application/x-director</mime> - <lang>en-us</lang> - <name>Adobe Shockwave Movie</name> - <url>http://fpdownload.macromedia.com/get/shockwave/default/english/win95nt/10.2.0.023/Shockwave_Installer_Slim.exe</url> - </plugin> - - <plugin> - <mime>application/pdf</mime> - <lang>en-us</lang> - <name>Adobe Acrobat</name> - <url>http://ardownload.adobe.com/pub/adobe/reader/win/8.x/8.1.2/enu/AdbeRdr812_en_US.exe</url> - </plugin> - - <plugin> - <mime>application/vnd.adobe.x-mars</mime> - <lang>en-us</lang> - <name>Adobe Acrobat</name> - <url>http://ardownload.adobe.com/pub/adobe/reader/win/8.x/8.1.2/enu/AdbeRdr812_en_US.exe</url> - </plugin> - - <plugin> - <mime>application/vnd.fdf</mime> - <lang>en-us</lang> - <name>Adobe Acrobat</name> - <url>http://ardownload.adobe.com/pub/adobe/reader/win/8.x/8.1.2/enu/AdbeRdr812_en_US.exe</url> - </plugin> - - <plugin> - <mime>application/vnd.adobe.xfdf</mime> - <lang>en-us</lang> - <name>Adobe Acrobat</name> - <url>http://ardownload.adobe.com/pub/adobe/reader/win/8.x/8.1.2/enu/AdbeRdr812_en_US.exe</url> - </plugin> - - <plugin> - <mime>application/vnd.adobe.xdp+xml</mime> - <lang>en-us</lang> - <name>Adobe Acrobat</name> - <url>http://ardownload.adobe.com/pub/adobe/reader/win/8.x/8.1.2/enu/AdbeRdr812_en_US.exe</url> - </plugin> - - <plugin> - <mime>application/vnd.adobe.xfd+xml</mime> - <lang>en-us</lang> - <name>Adobe Acrobat</name> - <url>http://ardownload.adobe.com/pub/adobe/reader/win/8.x/8.1.2/enu/AdbeRdr812_en_US.exe</url> - </plugin> - - <plugin> - <mime>video/quicktime</mime> - <lang>en-us</lang> - <name>Quicktime player</name> - <url>http://wsidecar.apple.com/cgi-bin/nph-reg3rdpty2.pl/product=19502&cat=59&platform=osx&method=sa/QuickTimeInstaller.exe</url> - </plugin> - - <plugin> - <mime>application/sdp</mime> - <lang>en-us</lang> - <name>Quicktime player</name> - <url>http://wsidecar.apple.com/cgi-bin/nph-reg3rdpty2.pl/product=19502&cat=59&platform=osx&method=sa/QuickTimeInstaller.exe</url> - </plugin> - - <plugin> - <mime>application/x-sdp</mime> - <lang>en-us</lang> - <name>Quicktime player</name> - <url>http://wsidecar.apple.com/cgi-bin/nph-reg3rdpty2.pl/product=19502&cat=59&platform=osx&method=sa/QuickTimeInstaller.exe</url> - </plugin> - - <plugin> - <mime>application/x-rtsp</mime> - <lang>en-us</lang> - <name>Quicktime player</name> - <url>http://wsidecar.apple.com/cgi-bin/nph-reg3rdpty2.pl/product=19502&cat=59&platform=osx&method=sa/QuickTimeInstaller.exe</url> - </plugin> - - <plugin> - <mime>video/flc</mime> - <lang>en-us</lang> - <name>Quicktime player</name> - <url>http://wsidecar.apple.com/cgi-bin/nph-reg3rdpty2.pl/product=19502&cat=59&platform=osx&method=sa/QuickTimeInstaller.exe</url> - </plugin> - - <plugin> - <mime>audio/x-wav</mime> - <lang>en-us</lang> - <name>Quicktime player</name> - <url>http://wsidecar.apple.com/cgi-bin/nph-reg3rdpty2.pl/product=19502&cat=59&platform=osx&method=sa/QuickTimeInstaller.exe</url> - </plugin> - - <plugin> - <mime>audio/wav</mime> - <lang>en-us</lang> - <name>Quicktime player</name> - <url>http://wsidecar.apple.com/cgi-bin/nph-reg3rdpty2.pl/product=19502&cat=59&platform=osx&method=sa/QuickTimeInstaller.exe</url> - </plugin> - - <plugin> - <mime>audio/aiff</mime> - <lang>en-us</lang> - <name>Quicktime player</name> - <url>http://wsidecar.apple.com/cgi-bin/nph-reg3rdpty2.pl/product=19502&cat=59&platform=osx&method=sa/QuickTimeInstaller.exe</url> - </plugin> - - <plugin> - <mime>audio/x-aiff</mime> - <lang>en-us</lang> - <name>Quicktime player</name> - <url>http://wsidecar.apple.com/cgi-bin/nph-reg3rdpty2.pl/product=19502&cat=59&platform=osx&method=sa/QuickTimeInstaller.exe</url> - </plugin> - - <plugin> - <mime>audio/basic</mime> - <lang>en-us</lang> - <name>Quicktime player</name> - <url>http://wsidecar.apple.com/cgi-bin/nph-reg3rdpty2.pl/product=19502&cat=59&platform=osx&method=sa/QuickTimeInstaller.exe</url> - </plugin> - - <plugin> - <mime>audio/mid</mime> - <lang>en-us</lang> - <name>Quicktime player</name> - <url>http://wsidecar.apple.com/cgi-bin/nph-reg3rdpty2.pl/product=19502&cat=59&platform=osx&method=sa/QuickTimeInstaller.exe</url> - </plugin> - - <plugin> - <mime>audio/x-midi</mime> - <lang>en-us</lang> - <name>Quicktime player</name> - <url>http://wsidecar.apple.com/cgi-bin/nph-reg3rdpty2.pl/product=19502&cat=59&platform=osx&method=sa/QuickTimeInstaller.exe</url> - </plugin> - - <plugin> - <mime>audio/midi</mime> - <lang>en-us</lang> - <name>Quicktime player</name> - <url>http://wsidecar.apple.com/cgi-bin/nph-reg3rdpty2.pl/product=19502&cat=59&platform=osx&method=sa/QuickTimeInstaller.exe</url> - </plugin> - - <plugin> - <mime>audio/vnd.qcelp</mime> - <lang>en-us</lang> - <name>Quicktime player</name> - <url>http://wsidecar.apple.com/cgi-bin/nph-reg3rdpty2.pl/product=19502&cat=59&platform=osx&method=sa/QuickTimeInstaller.exe</url> - </plugin> - - <plugin> - <mime>audio/x-gsm</mime> - <lang>en-us</lang> - <name>Quicktime player</name> - <url>http://wsidecar.apple.com/cgi-bin/nph-reg3rdpty2.pl/product=19502&cat=59&platform=osx&method=sa/QuickTimeInstaller.exe</url> - </plugin> - - <plugin> - <mime>audio/amr</mime> - <lang>en-us</lang> - <name>Quicktime player</name> - <url>http://wsidecar.apple.com/cgi-bin/nph-reg3rdpty2.pl/product=19502&cat=59&platform=osx&method=sa/QuickTimeInstaller.exe</url> - </plugin> - - <plugin> - <mime>audio/aac</mime> - <lang>en-us</lang> - <name>Quicktime player</name> - <url>http://wsidecar.apple.com/cgi-bin/nph-reg3rdpty2.pl/product=19502&cat=59&platform=osx&method=sa/QuickTimeInstaller.exe</url> - </plugin> - - <plugin> - <mime>audio/x-aac</mime> - <lang>en-us</lang> - <name>Quicktime player</name> - <url>http://wsidecar.apple.com/cgi-bin/nph-reg3rdpty2.pl/product=19502&cat=59&platform=osx&method=sa/QuickTimeInstaller.exe</url> - </plugin> - - <plugin> - <mime>audio/x-caf</mime> - <lang>en-us</lang> - <name>Quicktime player</name> - <url>http://wsidecar.apple.com/cgi-bin/nph-reg3rdpty2.pl/product=19502&cat=59&platform=osx&method=sa/QuickTimeInstaller.exe</url> - </plugin> - - <plugin> - <mime>audio/ac3</mime> - <lang>en-us</lang> - <name>Quicktime player</name> - <url>http://wsidecar.apple.com/cgi-bin/nph-reg3rdpty2.pl/product=19502&cat=59&platform=osx&method=sa/QuickTimeInstaller.exe</url> - </plugin> - - <plugin> - <mime>audio/x-ac3</mime> - <lang>en-us</lang> - <name>Quicktime player</name> - <url>http://wsidecar.apple.com/cgi-bin/nph-reg3rdpty2.pl/product=19502&cat=59&platform=osx&method=sa/QuickTimeInstaller.exe</url> - </plugin> - - <plugin> - <mime>video/x-mpeg</mime> - <lang>en-us</lang> - <name>Quicktime player</name> - <url>http://wsidecar.apple.com/cgi-bin/nph-reg3rdpty2.pl/product=19502&cat=59&platform=osx&method=sa/QuickTimeInstaller.exe</url> - </plugin> - - <plugin> - <mime>video/mpeg</mime> - <lang>en-us</lang> - <name>Quicktime player</name> - <url>http://wsidecar.apple.com/cgi-bin/nph-reg3rdpty2.pl/product=19502&cat=59&platform=osx&method=sa/QuickTimeInstaller.exe</url> - </plugin> - - <plugin> - <mime>audio/mpeg</mime> - <lang>en-us</lang> - <name>Quicktime player</name> - <url>http://wsidecar.apple.com/cgi-bin/nph-reg3rdpty2.pl/product=19502&cat=59&platform=osx&method=sa/QuickTimeInstaller.exe</url> - </plugin> - - <plugin> - <mime>audio/x-mpeg</mime> - <lang>en-us</lang> - <name>Quicktime player</name> - <url>http://wsidecar.apple.com/cgi-bin/nph-reg3rdpty2.pl/product=19502&cat=59&platform=osx&method=sa/QuickTimeInstaller.exe</url> - </plugin> - - <plugin> - <mime>video/3ggp</mime> - <lang>en-us</lang> - <name>Quicktime player</name> - <url>http://wsidecar.apple.com/cgi-bin/nph-reg3rdpty2.pl/product=19502&cat=59&platform=osx&method=sa/QuickTimeInstaller.exe</url> - </plugin> - - <plugin> - <mime>audio/3ggp</mime> - <lang>en-us</lang> - <name>Quicktime player</name> - <url>http://wsidecar.apple.com/cgi-bin/nph-reg3rdpty2.pl/product=19502&cat=59&platform=osx&method=sa/QuickTimeInstaller.exe</url> - </plugin> - - <plugin> - <mime>video/3ggp2</mime> - <lang>en-us</lang> - <name>Quicktime player</name> - <url>http://wsidecar.apple.com/cgi-bin/nph-reg3rdpty2.pl/product=19502&cat=59&platform=osx&method=sa/QuickTimeInstaller.exe</url> - </plugin> - - <plugin> - <mime>audio/3ggp2</mime> - <lang>en-us</lang> - <name>Quicktime player</name> - <url>http://wsidecar.apple.com/cgi-bin/nph-reg3rdpty2.pl/product=19502&cat=59&platform=osx&method=sa/QuickTimeInstaller.exe</url> - </plugin> - - <plugin> - <mime>video/sd-video</mime> - <lang>en-us</lang> - <name>Quicktime player</name> - <url>http://wsidecar.apple.com/cgi-bin/nph-reg3rdpty2.pl/product=19502&cat=59&platform=osx&method=sa/QuickTimeInstaller.exe</url> - </plugin> - - <plugin> - <mime>application/x-mpeg</mime> - <lang>en-us</lang> - <name>Quicktime player</name> - <url>http://wsidecar.apple.com/cgi-bin/nph-reg3rdpty2.pl/product=19502&cat=59&platform=osx&method=sa/QuickTimeInstaller.exe</url> - </plugin> - - <plugin> - <mime>video/mp4</mime> - <lang>en-us</lang> - <name>Quicktime player</name> - <url>http://wsidecar.apple.com/cgi-bin/nph-reg3rdpty2.pl/product=19502&cat=59&platform=osx&method=sa/QuickTimeInstaller.exe</url> - </plugin> - - <plugin> - <mime>audio/mp4</mime> - <lang>en-us</lang> - <name>Quicktime player</name> - <url>http://wsidecar.apple.com/cgi-bin/nph-reg3rdpty2.pl/product=19502&cat=59&platform=osx&method=sa/QuickTimeInstaller.exe</url> - </plugin> - - <plugin> - <mime>audio/x-m4a</mime> - <lang>en-us</lang> - <name>Quicktime player</name> - <url>http://wsidecar.apple.com/cgi-bin/nph-reg3rdpty2.pl/product=19502&cat=59&platform=osx&method=sa/QuickTimeInstaller.exe</url> - </plugin> - - <plugin> - <mime>audio/x-m4p</mime> - <lang>en-us</lang> - <name>Quicktime player</name> - <url>http://wsidecar.apple.com/cgi-bin/nph-reg3rdpty2.pl/product=19502&cat=59&platform=osx&method=sa/QuickTimeInstaller.exe</url> - </plugin> - - <plugin> - <mime>audio/x-m4b</mime> - <lang>en-us</lang> - <name>Quicktime player</name> - <url>http://wsidecar.apple.com/cgi-bin/nph-reg3rdpty2.pl/product=19502&cat=59&platform=osx&method=sa/QuickTimeInstaller.exe</url> - </plugin> - - <plugin> - <mime>video/x-m4v</mime> - <lang>en-us</lang> - <name>Quicktime player</name> - <url>http://wsidecar.apple.com/cgi-bin/nph-reg3rdpty2.pl/product=19502&cat=59&platform=osx&method=sa/QuickTimeInstaller.exe</url> - </plugin> - - <plugin> - <mime>image/x-macpaint</mime> - <lang>en-us</lang> - <name>Quicktime player</name> - <url>http://wsidecar.apple.com/cgi-bin/nph-reg3rdpty2.pl/product=19502&cat=59&platform=osx&method=sa/QuickTimeInstaller.exe</url> - </plugin> - - <plugin> - <mime>image/pict</mime> - <lang>en-us</lang> - <name>Quicktime player</name> - <url>http://wsidecar.apple.com/cgi-bin/nph-reg3rdpty2.pl/product=19502&cat=59&platform=osx&method=sa/QuickTimeInstaller.exe</url> - </plugin> - - <plugin> - <mime>image/x-pict</mime> - <lang>en-us</lang> - <name>Quicktime player</name> - <url>http://wsidecar.apple.com/cgi-bin/nph-reg3rdpty2.pl/product=19502&cat=59&platform=osx&method=sa/QuickTimeInstaller.exe</url> - </plugin> - - <plugin> - <mime>image/png</mime> - <lang>en-us</lang> - <name>Quicktime player</name> - <url>http://wsidecar.apple.com/cgi-bin/nph-reg3rdpty2.pl/product=19502&cat=59&platform=osx&method=sa/QuickTimeInstaller.exe</url> - </plugin> - - <plugin> - <mime>image/x-png</mime> - <lang>en-us</lang> - <name>Quicktime player</name> - <url>http://wsidecar.apple.com/cgi-bin/nph-reg3rdpty2.pl/product=19502&cat=59&platform=osx&method=sa/QuickTimeInstaller.exe</url> - </plugin> - - <plugin> - <mime>image/x-quicktime</mime> - <lang>en-us</lang> - <name>Quicktime player</name> - <url>http://wsidecar.apple.com/cgi-bin/nph-reg3rdpty2.pl/product=19502&cat=59&platform=osx&method=sa/QuickTimeInstaller.exe</url> - </plugin> - - <plugin> - <mime>image/x-sgi</mime> - <lang>en-us</lang> - <name>Quicktime player</name> - <url>http://wsidecar.apple.com/cgi-bin/nph-reg3rdpty2.pl/product=19502&cat=59&platform=osx&method=sa/QuickTimeInstaller.exe</url> - </plugin> - - <plugin> - <mime>image/x-targa</mime> - <lang>en-us</lang> - <name>Quicktime player</name> - <url>http://wsidecar.apple.com/cgi-bin/nph-reg3rdpty2.pl/product=19502&cat=59&platform=osx&method=sa/QuickTimeInstaller.exe</url> - </plugin> - - <plugin> - <mime>image/jp2</mime> - <lang>en-us</lang> - <name>Quicktime player</name> - <url>http://wsidecar.apple.com/cgi-bin/nph-reg3rdpty2.pl/product=19502&cat=59&platform=osx&method=sa/QuickTimeInstaller.exe</url> - </plugin> - - <plugin> - <mime>image/jpeg2000</mime> - <lang>en-us</lang> - <name>Quicktime player</name> - <url>http://wsidecar.apple.com/cgi-bin/nph-reg3rdpty2.pl/product=19502&cat=59&platform=osx&method=sa/QuickTimeInstaller.exe</url> - </plugin> - - <plugin> - <mime>image/jpeg2000-image</mime> - <lang>en-us</lang> - <name>Quicktime player</name> - <url>http://wsidecar.apple.com/cgi-bin/nph-reg3rdpty2.pl/product=19502&cat=59&platform=osx&method=sa/QuickTimeInstaller.exe</url> - </plugin> - - <plugin> - <mime>image/x-jpeg2000-image</mime> - <lang>en-us</lang> - <name>Quicktime player</name> - <url>http://wsidecar.apple.com/cgi-bin/nph-reg3rdpty2.pl/product=19502&cat=59&platform=osx&method=sa/QuickTimeInstaller.exe</url> - </plugin> - -</plugins>
\ No newline at end of file diff --git a/chrome/default_plugin/plugins2.xml b/chrome/default_plugin/plugins2.xml deleted file mode 100644 index 3cddca3..0000000 --- a/chrome/default_plugin/plugins2.xml +++ /dev/null @@ -1,59 +0,0 @@ -<plugins> - <plugin> - <mime_types>application/x-java-applet;application/x-java-bean;application/x-java-vm;application/x-java-applet,version=1.1.1;application/x-java-bean,version=1.1.1;application/x-java-applet,version=1.1;application/x-java-bean,version=1.1;application/x-java-applet,version=1.2;application/x-java-bean,version=1.2;application/x-java-applet,version=1.1.3;application/x-java-bean,version=1.1.3;application/x-java-applet,version=1.1.2;application/x-java-bean,version=1.1.2;application/x-java-applet,version=1.3;application/x-java-bean,version=1.3;application/x-java-applet,version=1.2.2;application/x-java-bean,version=1.2.2;application/x-java-applet,version=1.2.1;application/x-java-bean,version=1.2.1;application/x-java-applet,version=1.3.1;application/x-java-bean,version=1.3.1;application/x-java-applet,version=1.4;application/x-java-bean,version=1.4;application/x-java-applet,version=1.4.1;application/x-java-bean,version=1.4.1;application/x-java-applet,version=1.4.2;application/x-java-bean,version=1.4.2;application/x-java-applet,version=1.5;application/x-java-bean,version=1.5;application/x-java-applet,version=1.6;application/x-java-bean,version=1.6;</mime_types> - <lang>en-us</lang> - <name>Java(TM)</name> - <url>http://java.com/en/download/</url> - <displayurl>1</displayurl> - </plugin> - - <plugin> - <mime_types>audio/x-pn-realaudio-plugin;audio/x-pn-realaudio;audio/vnd.rn-realaudio;video/vnd.rn-realvideo</mime_types> - <lang>en-us</lang> - <name>RealPlayer</name> - <url>http://forms.real.com/real/realone/download.html?type=rpsp_us</url> - </plugin> - - <plugin> - <mime_types>application/x-shockwave-flash;application/futuresplash</mime_types> - <lang>en-us</lang> - <name>Adobe Flash Player</name> - <url>http://fpdownload.adobe.com/get/flashplayer/current/install_flash_player.exe</url> - </plugin> - - <plugin> - <mime_types>application/x-director</mime_types> - <lang>en-us</lang> - <name>Adobe Shockwave Player</name> - <url>http://fpdownload.macromedia.com/get/shockwave/default/english/win95nt/latest/Shockwave_Installer_Slim.exe</url> - </plugin> - - <plugin> - <mime_types>application/pdf;application/vnd.adobe.x-mars;application/vnd.fdf;application/vnd.adobe.xfdf;application/vnd.adobe.xdp+xml;application/vnd.adobe.xfd+xml;</mime_types> - <lang>en-us</lang> - <name>Adobe Reader</name> - <url>http://ardownload.adobe.com/pub/adobe/reader/win/9.x/9.1/enu/AdbeRdr910_en_US.exe</url> - </plugin> - - <plugin> - <mime_types>video/quicktime;application/sdp;application/x-sdp;application/x-rtsp;video/flc;audio/x-wav;audio/wav;audio/aiff;audio/x-aiff;audio/basic;audio/mid;audio/x-midi;audio/midi;audio/vnd.qcelp;audio/x-gsm;audio/amr;audio/aac;audio/x-aac;audio/x-caf;audio/ac3;audio/x-ac3;video/x-mpeg;video/mpeg;audio/mpeg;audio/x-mpeg;video/3ggp;audio/3ggp;video/3ggp2;audio/3ggp2;video/sd-video;application/x-mpeg;video/mp4;audio/mp4;audio/x-m4a;audio/x-m4p;audio/x-m4b;video/x-m4v;image/x-macpaint;image/pict;image/x-pict;image/png;image/x-png;image/x-quicktime;image/x-sgi;image/x-targa;image/jp2;image/jpeg2000;image/jpeg2000-image;image/x-jpeg2000-image</mime_types> - <lang>en-us</lang> - <name>QuickTime Player</name> - <url>http://appldnld.apple.com.edgesuite.net/content.info.apple.com/QuickTime/061-6118.20090601.Pq3V9/QuickTimeInstaller.exe</url> - </plugin> - - <plugin> - <mime_types>application/x-ms-wmp;application/asx;video/x-ms-asf-plugin;application/x-mplayer2;video/x-ms-asf;video/x-ms-wm;audio/x-ms-wma;audio/x-ms-wax;video/x-ms-wmv;video/x-ms-wvx</mime_types> - <lang>en-us</lang> - <name>Windows Media Player Plugin</name> - <url>http://port25.technet.com/videos/downloads/wmpfirefoxplugin.exe</url> - </plugin> - - <plugin> - <mime_types>video/divx;video/x-matroska</mime_types> - <lang>en-us</lang> - <name>DivX Web Player</name> - <url>http://download.divx.com/player/divxdotcom/DivXWebPlayerInstaller.exe</url> - </plugin> - -</plugins>
\ No newline at end of file diff --git a/chrome/renderer/render_view.cc b/chrome/renderer/render_view.cc index f05e975..bb7d877 100644 --- a/chrome/renderer/render_view.cc +++ b/chrome/renderer/render_view.cc @@ -111,6 +111,7 @@ #include "third_party/WebKit/WebKit/chromium/public/WebVector.h" #include "third_party/WebKit/WebKit/chromium/public/WebWindowFeatures.h" #include "webkit/appcache/web_application_cache_host_impl.h" +#include "webkit/default_plugin/default_plugin_shared.h" #include "webkit/glue/dom_operations.h" #include "webkit/glue/form_data.h" #include "webkit/glue/form_field.h" @@ -120,7 +121,6 @@ #include "webkit/glue/media/simple_data_source.h" #include "webkit/glue/media/video_renderer_impl.h" #include "webkit/glue/password_form.h" -#include "webkit/glue/plugins/default_plugin_shared.h" #include "webkit/glue/plugins/pepper_webplugin_impl.h" #include "webkit/glue/plugins/plugin_list.h" #include "webkit/glue/plugins/webplugin_delegate.h" |