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

Side by Side Diff: third_party/WebKit/Source/platform/plugins/PluginData.cpp

Issue 2156803002: [HBD] Remove PluginCache and reload plugin list when origin changes (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add comment Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 Copyright (C) 2000 Harri Porten (porten@kde.org) 2 Copyright (C) 2000 Harri Porten (porten@kde.org)
3 Copyright (C) 2000 Daniel Molkentin (molkentin@kde.org) 3 Copyright (C) 2000 Daniel Molkentin (molkentin@kde.org)
4 Copyright (C) 2000 Stefan Schimanski (schimmi@kde.org) 4 Copyright (C) 2000 Stefan Schimanski (schimmi@kde.org)
5 Copyright (C) 2003, 2004, 2005, 2006, 2007 Apple Inc. All Rights Reserved. 5 Copyright (C) 2003, 2004, 2005, 2006, 2007 Apple Inc. All Rights Reserved.
6 Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) 6 Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies)
7 7
8 This library is free software; you can redistribute it and/or 8 This library is free software; you can redistribute it and/or
9 modify it under the terms of the GNU Library General Public 9 modify it under the terms of the GNU Library General Public
10 License as published by the Free Software Foundation; either 10 License as published by the Free Software Foundation; either
11 version 2 of the License, or (at your option) any later version. 11 version 2 of the License, or (at your option) any later version.
12 12
13 This library is distributed in the hope that it will be useful, 13 This library is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of 14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 Library General Public License for more details. 16 Library General Public License for more details.
17 17
18 You should have received a copy of the GNU Library General Public License 18 You should have received a copy of the GNU Library General Public License
19 along with this library; see the file COPYING.LIB. If not, write to 19 along with this library; see the file COPYING.LIB. If not, write to
20 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 20 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
21 Boston, MA 02110-1301, USA. 21 Boston, MA 02110-1301, USA.
22 */ 22 */
23 23
24 #include "platform/plugins/PluginData.h" 24 #include "platform/plugins/PluginData.h"
25 25
26 #include "platform/plugins/PluginListBuilder.h" 26 #include "platform/plugins/PluginListBuilder.h"
27 #include "platform/weborigin/SecurityOrigin.h"
27 #include "public/platform/Platform.h" 28 #include "public/platform/Platform.h"
29 #include "public/platform/WebSecurityOrigin.h"
28 30
29 namespace blink { 31 namespace blink {
30 32
31 class PluginCache { 33 PluginData::PluginData(SecurityOrigin* mainFrameOrigin)
32 public: 34 : m_mainFrameOrigin(mainFrameOrigin)
33 PluginCache() : m_loaded(false), m_refresh(false) { }
34 ~PluginCache() { reset(false); }
35
36 void reset(bool refresh)
37 {
38 m_plugins.clear();
39 m_loaded = false;
40 m_refresh = refresh;
41 }
42
43 const Vector<PluginInfo>& plugins()
44 {
45 if (!m_loaded) {
46 PluginListBuilder builder(&m_plugins);
47 Platform::current()->getPluginList(m_refresh, &builder);
48 m_loaded = true;
49 m_refresh = false;
50 }
51 return m_plugins;
52 }
53
54 private:
55 Vector<PluginInfo> m_plugins;
56 bool m_loaded;
57 bool m_refresh;
58 };
59
60 static PluginCache& pluginCache()
61 { 35 {
62 DEFINE_STATIC_LOCAL(PluginCache, cache, ()); 36 PluginListBuilder builder(&m_plugins);
63 return cache; 37 Platform::current()->getPluginList(false, WebSecurityOrigin(m_mainFrameOrigi n), &builder);
64 }
65
66 PluginData::PluginData(const Page* page)
67 {
68 initPlugins(page);
69 38
70 for (unsigned i = 0; i < m_plugins.size(); ++i) { 39 for (unsigned i = 0; i < m_plugins.size(); ++i) {
71 const PluginInfo& plugin = m_plugins[i]; 40 const PluginInfo& plugin = m_plugins[i];
72 for (unsigned j = 0; j < plugin.mimes.size(); ++j) { 41 for (unsigned j = 0; j < plugin.mimes.size(); ++j) {
73 m_mimes.append(plugin.mimes[j]); 42 m_mimes.append(plugin.mimes[j]);
74 m_mimePluginIndices.append(i); 43 m_mimePluginIndices.append(i);
75 } 44 }
76 } 45 }
77 } 46 }
78 47
(...skipping 17 matching lines...) Expand all
96 return 0; 65 return 0;
97 } 66 }
98 67
99 String PluginData::pluginNameForMimeType(const String& mimeType) const 68 String PluginData::pluginNameForMimeType(const String& mimeType) const
100 { 69 {
101 if (const PluginInfo* info = pluginInfoForMimeType(mimeType)) 70 if (const PluginInfo* info = pluginInfoForMimeType(mimeType))
102 return info->name; 71 return info->name;
103 return String(); 72 return String();
104 } 73 }
105 74
106 void PluginData::initPlugins(const Page*) 75 void PluginData::refreshBrowserSidePluginCache()
107 { 76 {
108 const Vector<PluginInfo>& plugins = pluginCache().plugins(); 77 Vector<PluginInfo> plugins;
109 for (size_t i = 0; i < plugins.size(); ++i) 78 PluginListBuilder builder(&plugins);
110 m_plugins.append(plugins[i]); 79 Platform::current()->getPluginList(true, WebSecurityOrigin::createUnique(), &builder);
111 }
112
113 void PluginData::refresh()
114 {
115 pluginCache().reset(true);
116 pluginCache().plugins(); // Force the plugins to be reloaded now.
117 } 80 }
118 81
119 } // namespace blink 82 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/platform/plugins/PluginData.h ('k') | third_party/WebKit/public/platform/Platform.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698