diff options
author | darin@chromium.org <darin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-04-24 17:17:45 +0000 |
---|---|---|
committer | darin@chromium.org <darin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-04-24 17:17:45 +0000 |
commit | 706f2dcd21c3628dfdda1448235fb4b46c1bab39 (patch) | |
tree | 8775eecc3423aea3813b6f1263c48af8a5f97ff5 /webkit/glue/webkitclient_impl.cc | |
parent | cf62075e20a12d43c9a9de07411f4c0c1f47336d (diff) | |
download | chromium_src-706f2dcd21c3628dfdda1448235fb4b46c1bab39.zip chromium_src-706f2dcd21c3628dfdda1448235fb4b46c1bab39.tar.gz chromium_src-706f2dcd21c3628dfdda1448235fb4b46c1bab39.tar.bz2 |
Chrome side of using WebPluginListBuilder.
I also broke glue/webplugininfo.h out of glue/webplugin.h as part of this
change. Eventually, glue/webplugin.h will go away and be moved into the WebKit
API, but the structures left in glue/webplugininfo.h need to remain since they
are used extensively throughout Chrome.
BUG=10922
R=dglazkov
Review URL: http://codereview.chromium.org/93116
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@14438 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/glue/webkitclient_impl.cc')
-rw-r--r-- | webkit/glue/webkitclient_impl.cc | 36 |
1 files changed, 35 insertions, 1 deletions
diff --git a/webkit/glue/webkitclient_impl.cc b/webkit/glue/webkitclient_impl.cc index 9c916b6..cdf4191 100644 --- a/webkit/glue/webkitclient_impl.cc +++ b/webkit/glue/webkitclient_impl.cc @@ -6,12 +6,17 @@ #include "base/message_loop.h" #include "base/stats_counters.h" +#include "base/string_util.h" #include "base/trace_event.h" #include "grit/webkit_resources.h" #include "third_party/WebKit/WebKit/chromium/public/WebData.h" +#include "third_party/WebKit/WebKit/chromium/public/WebPluginListBuilder.h" +#include "third_party/WebKit/WebKit/chromium/public/WebString.h" #include "webkit/glue/webkit_glue.h" +#include "webkit/glue/webplugininfo.h" using WebKit::WebData; +using WebKit::WebPluginListBuilder; using WebKit::WebThemeEngine; namespace webkit_glue { @@ -29,6 +34,35 @@ WebThemeEngine* WebKitClientImpl::themeEngine() { #endif } +void WebKitClientImpl::getPluginList(bool refresh, + WebPluginListBuilder* builder) { + std::vector<WebPluginInfo> plugins; + if (!GetPlugins(refresh, &plugins)) + return; + + for (size_t i = 0; i < plugins.size(); ++i) { + const WebPluginInfo& plugin = plugins[i]; + + builder->addPlugin( + WideToUTF16Hack(plugin.name), + WideToUTF16Hack(plugin.desc), + FilePathStringToWebString(plugin.path.BaseName().value())); + + for (size_t j = 0; j < plugin.mime_types.size(); ++ j) { + const WebPluginMimeType& mime_type = plugin.mime_types[j]; + + builder->addMediaTypeToLastPlugin( + UTF8ToUTF16(mime_type.mime_type), + WideToUTF16Hack(mime_type.description)); + + for (size_t k = 0; k < mime_type.file_extensions.size(); ++k) { + builder->addFileExtensionToLastMediaType( + UTF8ToUTF16(mime_type.file_extensions[k])); + } + } + } +} + void WebKitClientImpl::decrementStatsCounter(const char* name) { StatsCounter(name).Decrement(); } @@ -69,7 +103,7 @@ WebData WebKitClientImpl::loadResource(const char* name) { }; for (size_t i = 0; i < ARRAYSIZE_UNSAFE(resources); ++i) { if (!strcmp(name, resources[i].name)) { - StringPiece resource = webkit_glue::GetDataResource(resources[i].id); + StringPiece resource = GetDataResource(resources[i].id); return WebData(resource.data(), resource.size()); } } |