author | Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> |
Tue, 06 Jul 2010 15:10:48 +0300 | |
changeset 30 | 5dc02b23752f |
parent 0 | 1918ee327afb |
permissions | -rw-r--r-- |
0 | 1 |
/* |
2 |
* Copyright (C) 2006, 2007 Apple Inc. All rights reserved. |
|
3 |
* Copyright (C) 2008 Collabora, Ltd. All rights reserved. |
|
4 |
* Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies) |
|
5 |
* |
|
6 |
* Redistribution and use in source and binary forms, with or without |
|
7 |
* modification, are permitted provided that the following conditions |
|
8 |
* are met: |
|
9 |
* 1. Redistributions of source code must retain the above copyright |
|
10 |
* notice, this list of conditions and the following disclaimer. |
|
11 |
* 2. Redistributions in binary form must reproduce the above copyright |
|
12 |
* notice, this list of conditions and the following disclaimer in the |
|
13 |
* documentation and/or other materials provided with the distribution. |
|
14 |
* |
|
15 |
* THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY |
|
16 |
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
|
17 |
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
|
18 |
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR |
|
19 |
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
|
20 |
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
|
21 |
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR |
|
22 |
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY |
|
23 |
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
|
24 |
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
|
25 |
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
|
26 |
*/ |
|
27 |
||
28 |
#ifndef PluginDatabase_H |
|
29 |
#define PluginDatabase_H |
|
30 |
||
31 |
#include "PlatformString.h" |
|
32 |
#include "PluginPackage.h" |
|
33 |
#include "StringHash.h" |
|
34 |
||
35 |
#include <wtf/HashSet.h> |
|
36 |
#include <wtf/Vector.h> |
|
37 |
||
38 |
namespace WebCore { |
|
39 |
class Element; |
|
40 |
class Frame; |
|
41 |
class IntSize; |
|
42 |
class KURL; |
|
43 |
class PluginDatabaseClient; |
|
44 |
class PluginPackage; |
|
45 |
||
46 |
typedef HashSet<RefPtr<PluginPackage>, PluginPackageHash> PluginSet; |
|
47 |
||
30
5dc02b23752f
Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
0
diff
changeset
|
48 |
class PluginDatabase : public Noncopyable { |
0 | 49 |
public: |
50 |
PluginDatabase(); |
|
51 |
||
52 |
// The first call to installedPlugins creates the plugin database |
|
53 |
// and by default populates it with the plugins installed on the system. |
|
54 |
// For testing purposes, it is possible to not populate the database |
|
55 |
// automatically, as the plugins might affect the DRT results by |
|
56 |
// writing to a.o. stderr. |
|
57 |
static PluginDatabase* installedPlugins(bool populate = true); |
|
58 |
||
59 |
bool refresh(); |
|
60 |
void clear(); |
|
61 |
Vector<PluginPackage*> plugins() const; |
|
62 |
bool isMIMETypeRegistered(const String& mimeType); |
|
63 |
void addExtraPluginDirectory(const String&); |
|
64 |
||
65 |
static bool isPreferredPluginDirectory(const String& directory); |
|
66 |
static int preferredPluginCompare(const void*, const void*); |
|
67 |
||
68 |
PluginPackage* findPlugin(const KURL&, String& mimeType); |
|
69 |
PluginPackage* pluginForMIMEType(const String& mimeType); |
|
70 |
void setPreferredPluginForMIMEType(const String& mimeType, PluginPackage* plugin); |
|
71 |
||
72 |
void setPluginDirectories(const Vector<String>& directories) |
|
73 |
{ |
|
74 |
clear(); |
|
75 |
m_pluginDirectories = directories; |
|
76 |
} |
|
77 |
||
78 |
void setClient(PluginDatabaseClient* client) |
|
79 |
{ |
|
80 |
m_client = client; |
|
81 |
} |
|
82 |
||
83 |
static Vector<String> defaultPluginDirectories(); |
|
84 |
Vector<String> pluginDirectories() const { return m_pluginDirectories; } |
|
85 |
||
30
5dc02b23752f
Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
0
diff
changeset
|
86 |
String MIMETypeForExtension(const String& extension) const; |
5dc02b23752f
Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
0
diff
changeset
|
87 |
|
0 | 88 |
private: |
89 |
void getPluginPathsInDirectories(HashSet<String>&) const; |
|
90 |
void getDeletedPlugins(PluginSet&) const; |
|
91 |
||
92 |
// Returns whether the plugin was actually added or not (it won't be added if it's a duplicate of an existing plugin). |
|
93 |
bool add(PassRefPtr<PluginPackage>); |
|
94 |
void remove(PluginPackage*); |
|
95 |
||
96 |
Vector<String> m_pluginDirectories; |
|
97 |
HashSet<String> m_registeredMIMETypes; |
|
98 |
PluginSet m_plugins; |
|
99 |
HashMap<String, RefPtr<PluginPackage> > m_pluginsByPath; |
|
100 |
HashMap<String, time_t> m_pluginPathsWithTimes; |
|
101 |
HashMap<String, RefPtr<PluginPackage> > m_preferredPlugins; |
|
102 |
PluginDatabaseClient* m_client; |
|
103 |
}; |
|
104 |
||
105 |
} // namespace WebCore |
|
106 |
||
107 |
#endif |