15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2011 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#ifndef CONTENT_PUBLIC_COMMON_WEBPLUGININFO_H_ 6ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#define CONTENT_PUBLIC_COMMON_WEBPLUGININFO_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string> 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <vector> 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/basictypes.h" 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/files/file_path.h" 13ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include "content/common/content_export.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochnamespace base { 16ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochclass Version; 17ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch} 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 19ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochnamespace content { 20ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 21ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochstruct CONTENT_EXPORT WebPluginMimeType { 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebPluginMimeType(); 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // A constructor for the common case of a single file extension and an ASCII 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // description. 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebPluginMimeType(const std::string& m, 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& f, 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& d); 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ~WebPluginMimeType(); 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The name of the mime type (e.g., "application/x-shockwave-flash"). 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string mime_type; 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // A list of all the file extensions for this mime type. 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<std::string> file_extensions; 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Description of the mime type. 37c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) base::string16 description; 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Extra parameters to include when instantiating the plugin. 40c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::vector<base::string16> additional_param_names; 41c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::vector<base::string16> additional_param_values; 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Describes an available NPAPI or Pepper plugin. 45ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochstruct CONTENT_EXPORT WebPluginInfo { 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) enum PluginType { 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PLUGIN_TYPE_NPAPI, 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PLUGIN_TYPE_PEPPER_IN_PROCESS, 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PLUGIN_TYPE_PEPPER_OUT_OF_PROCESS, 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PLUGIN_TYPE_PEPPER_UNSANDBOXED 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebPluginInfo(); 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebPluginInfo(const WebPluginInfo& rhs); 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ~WebPluginInfo(); 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebPluginInfo& operator=(const WebPluginInfo& rhs); 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Special constructor only used during unit testing: 59c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) WebPluginInfo(const base::string16& fake_name, 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::FilePath& fake_path, 61c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const base::string16& fake_version, 62c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const base::string16& fake_desc); 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 64ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch bool is_pepper_plugin() const { 65ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch return ((type == PLUGIN_TYPE_PEPPER_IN_PROCESS ) || 66ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch (type == PLUGIN_TYPE_PEPPER_OUT_OF_PROCESS) || 67ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch (type == PLUGIN_TYPE_PEPPER_UNSANDBOXED)); 68ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch } 69ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 70ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // Parse a version string as used by a plug-in. This method is more lenient 71ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // in accepting weird version strings than base::Version::GetFromString() 72ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch static void CreateVersionFromString(const base::string16& version_string, 73ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch base::Version* parsed_version); 74ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The name of the plugin (i.e. Flash). 76c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) base::string16 name; 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The path to the plugin file (DLL/bundle/library). 792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath path; 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The version number of the plugin file (may be OS-specific) 82c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) base::string16 version; 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // A description of the plugin that we get from its version info. 85c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) base::string16 desc; 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // A list of all the mime types that this plugin supports. 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<WebPluginMimeType> mime_types; 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Plugin type. See the PluginType enum. 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int type; 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // When type is PLUGIN_TYPE_PEPPER_* this indicates the permission bits. 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int32 pepper_permissions; 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 97ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch} // namespace content 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 99ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#endif // CONTENT_PUBLIC_COMMON_WEBPLUGININFO_H_ 100