15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 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)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CONTENT_RENDERER_RENDERER_WEBKITPLATFORMSUPPORT_IMPL_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CONTENT_RENDERER_RENDERER_WEBKITPLATFORMSUPPORT_IMPL_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/compiler_specific.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/scoped_ptr.h"
10effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "content/child/blink_platform_impl.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/common/content_export.h"
12f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "content/renderer/compositor_bindings/web_compositor_support_impl.h"
13f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "content/renderer/webpublicsuffixlist_impl.h"
14868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "third_party/WebKit/public/platform/WebGraphicsContext3D.h"
15868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "third_party/WebKit/public/platform/WebIDBFactory.h"
160529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "third_party/WebKit/public/platform/WebScreenOrientationType.h"
172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
18eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochnamespace base {
19eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass MessageLoopProxy;
20eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}
21eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace cc {
232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class ContextProvider;
242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
26eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochnamespace IPC {
27eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass SyncMessageFilter;
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
30f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)namespace blink {
3146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)class WebBatteryStatus;
329ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdochclass WebDeviceMotionData;
333551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)class WebDeviceOrientationData;
34b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)class WebGraphicsContext3DProvider;
35b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)}
36b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content {
38cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class BatteryStatusDispatcher;
397dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochclass DeviceMotionEventPump;
402385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdochclass DeviceOrientationEventPump;
41558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdochclass QuotaMessageFilter;
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class RendererClipboardClient;
43f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)class RenderView;
446d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)class RendererGamepadProvider;
452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class ThreadSafeSender;
46eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass WebClipboardImpl;
47f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class WebDatabaseObserverImpl;
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebFileSystemImpl;
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class CONTENT_EXPORT RendererWebKitPlatformSupportImpl
51effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch    : public BlinkPlatformImpl {
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  RendererWebKitPlatformSupportImpl();
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~RendererWebKitPlatformSupportImpl();
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void set_plugin_refresh_allowed(bool plugin_refresh_allowed) {
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    plugin_refresh_allowed_ = plugin_refresh_allowed;
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Platform methods:
60f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual blink::WebClipboard* clipboard();
61f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual blink::WebMimeRegistry* mimeRegistry();
62f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual blink::WebFileUtilities* fileUtilities();
63f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual blink::WebSandboxSupport* sandboxSupport();
64f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual blink::WebCookieJar* cookieJar();
65f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual blink::WebThemeEngine* themeEngine();
66f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual blink::WebSpeechSynthesizer* createSpeechSynthesizer(
67f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      blink::WebSpeechSynthesizerClient* client);
682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual bool sandboxEnabled();
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual unsigned long long visitedLinkHash(
702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      const char* canonicalURL, size_t length);
712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual bool isLinkVisited(unsigned long long linkHash);
72c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  virtual void createMessageChannel(blink::WebMessagePortChannel** channel1,
73c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch                                    blink::WebMessagePortChannel** channel2);
74f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual blink::WebPrescientNetworking* prescientNetworking();
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void cacheMetadata(
76f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      const blink::WebURL&, double, const char*, size_t);
77f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual blink::WebString defaultLocale();
782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void suddenTerminationChanged(bool enabled);
79f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual blink::WebStorageNamespace* createLocalStorageNamespace();
80f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual blink::Platform::FileHandle databaseOpenFile(
81f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      const blink::WebString& vfs_file_name, int desired_flags);
82f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual int databaseDeleteFile(const blink::WebString& vfs_file_name,
832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                 bool sync_dir);
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual long databaseGetFileAttributes(
85f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      const blink::WebString& vfs_file_name);
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual long long databaseGetFileSize(
87f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      const blink::WebString& vfs_file_name);
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual long long databaseGetSpaceAvailableForOrigin(
89f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      const blink::WebString& origin_identifier);
90f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual blink::WebString signedPublicKeyAndChallengeString(
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      unsigned key_size_index,
92f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      const blink::WebString& challenge,
93f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      const blink::WebURL& url);
94ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  virtual void getPluginList(bool refresh,
95f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)                             blink::WebPluginListBuilder* builder);
96f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual blink::WebPublicSuffixList* publicSuffixList();
97f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual void screenColorProfile(blink::WebVector<char>* to_profile);
98a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  virtual blink::WebScrollbarBehavior* scrollbarBehavior();
99f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual blink::WebIDBFactory* idbFactory();
100f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual blink::WebFileSystem* fileSystem();
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool canAccelerate2dCanvas();
1022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual bool isThreadedCompositingEnabled();
1032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual double audioHardwareSampleRate();
1042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual size_t audioHardwareBufferSize();
1052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual unsigned audioHardwareOutputChannels();
106f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual blink::WebDatabaseObserver* databaseObserver();
1072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
108f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual blink::WebAudioDevice* createAudioDevice(
1092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      size_t buffer_size, unsigned input_channels, unsigned channels,
110f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      double sample_rate, blink::WebAudioDevice::RenderCallback* callback,
111f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      const blink::WebString& input_device_id);
1122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
113eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  virtual bool loadAudioResource(
114f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      blink::WebAudioBus* destination_bus, const char* audio_file_data,
115a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      size_t data_size);
116eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
117f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual blink::WebMIDIAccessor*
118f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      createMIDIAccessor(blink::WebMIDIAccessorClient* client);
119f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
120f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual blink::WebBlobRegistry* blobRegistry();
121cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  virtual void sampleGamepads(blink::WebGamepads&);
122cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  virtual void setGamepadListener(blink::WebGamepadListener*);
123f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual blink::WebRTCPeerConnectionHandler* createRTCPeerConnectionHandler(
124f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      blink::WebRTCPeerConnectionHandlerClient* client);
125f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual blink::WebMediaStreamCenter* createMediaStreamCenter(
126f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      blink::WebMediaStreamCenterClient* client);
1272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual bool processMemorySizesInBytes(
1282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      size_t* private_bytes, size_t* shared_bytes);
129f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual blink::WebGraphicsContext3D* createOffscreenGraphicsContext3D(
13023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      const blink::WebGraphicsContext3D::Attributes& attributes);
13123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  virtual blink::WebGraphicsContext3D* createOffscreenGraphicsContext3D(
132a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      const blink::WebGraphicsContext3D::Attributes& attributes,
133a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      blink::WebGraphicsContext3D* share_context);
134f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual blink::WebGraphicsContext3DProvider*
135b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)      createSharedOffscreenGraphicsContext3DProvider();
136f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual blink::WebCompositorSupport* compositorSupport();
137f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual blink::WebString convertIDNToUnicode(
138f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      const blink::WebString& host, const blink::WebString& languages);
1397dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  virtual void setDeviceMotionListener(
140cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      blink::WebDeviceMotionListener* listener);
1412385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch  virtual void setDeviceOrientationListener(
142cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      blink::WebDeviceOrientationListener* listener);
143ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  virtual void queryStorageUsageAndQuota(
144f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      const blink::WebURL& storage_partition,
145f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      blink::WebStorageQuotaType,
146cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      blink::WebStorageQuotaCallbacks);
147ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  virtual void vibrate(unsigned int milliseconds);
148ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  virtual void cancelVibration();
149cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  virtual void setBatteryStatusListener(
150cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      blink::WebBatteryStatusListener* listener);
1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1526d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)  void set_gamepad_provider(RendererGamepadProvider* provider) {
1536d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)    gamepad_provider_ = provider;
1546d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)  }
1556d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)
1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Disables the WebSandboxSupport implementation for testing.
1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Tests that do not set up a full sandbox environment should call
1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // SetSandboxEnabledForTesting(false) _before_ creating any instances
1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // of this class, to ensure that we don't attempt to use sandbox-related
1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // file descriptors or other resources.
1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  //
1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns the previous |enable| value.
1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static bool SetSandboxEnabledForTesting(bool enable);
1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1659ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  // Set WebDeviceMotionData to return when setDeviceMotionListener is invoked.
1669ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  static void SetMockDeviceMotionDataForTesting(
167f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      const blink::WebDeviceMotionData& data);
1683551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  // Set WebDeviceOrientationData to return when setDeviceOrientationListener
1693551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  // is invoked.
1703551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  static void SetMockDeviceOrientationDataForTesting(
171f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      const blink::WebDeviceOrientationData& data);
1720529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  // Forces the screen orientation for testing purposes.
1730529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  static void SetMockScreenOrientationForTesting(
174f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)      RenderView* render_view,
1750529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch      blink::WebScreenOrientationType);
176cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  // Resets the mock screen orientation data used for testing.
177cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  static void ResetMockScreenOrientationForTesting();
178f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
17946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  // Notifies blink::WebBatteryStatusListener that battery status has changed.
18046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  static void MockBatteryStatusChangedForTesting(
18146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      const blink::WebBatteryStatus& status);
18246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
183f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  WebDatabaseObserverImpl* web_database_observer_impl() {
184f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    return web_database_observer_impl_.get();
185f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  }
1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool CheckPreparsedJsCachingEnabled() const;
1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_ptr<RendererClipboardClient> clipboard_client_;
191eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  scoped_ptr<WebClipboardImpl> clipboard_;
1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  class FileUtilities;
1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_ptr<FileUtilities> file_utilities_;
1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  class MimeRegistry;
1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_ptr<MimeRegistry> mime_registry_;
1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  class SandboxSupport;
2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_ptr<SandboxSupport> sandbox_support_;
2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // This counter keeps track of the number of times sudden termination is
2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // enabled or disabled. It starts at 0 (enabled) and for every disable
2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // increments by 1, for every enable decrements by 1. When it reaches 0,
2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // we tell the browser to enable fast termination.
2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int sudden_termination_disables_;
2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // If true, then a GetPlugins call is allowed to rescan the disk.
2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool plugin_refresh_allowed_;
2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
211f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  scoped_ptr<blink::WebIDBFactory> web_idb_factory_;
2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
213f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  scoped_ptr<blink::WebBlobRegistry> blob_registry_;
2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
215f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  WebPublicSuffixListImpl public_suffix_list_;
2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2177dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  scoped_ptr<DeviceMotionEventPump> device_motion_event_pump_;
2182385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch  scoped_ptr<DeviceOrientationEventPump> device_orientation_event_pump_;
2197dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
220eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  scoped_refptr<base::MessageLoopProxy> child_thread_loop_;
221eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  scoped_refptr<IPC::SyncMessageFilter> sync_message_filter_;
2222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  scoped_refptr<ThreadSafeSender> thread_safe_sender_;
223558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch  scoped_refptr<QuotaMessageFilter> quota_message_filter_;
2242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
225f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  scoped_ptr<WebDatabaseObserverImpl> web_database_observer_impl_;
226f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
227f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  WebCompositorSupportImpl compositor_support_;
228a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
229a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  scoped_ptr<blink::WebScrollbarBehavior> web_scrollbar_behavior_;
2305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
231cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  scoped_ptr<BatteryStatusDispatcher> battery_status_dispatcher_;
232cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
2336d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)  RendererGamepadProvider* gamepad_provider_;
2346d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)
2355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(RendererWebKitPlatformSupportImpl);
2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace content
2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // CONTENT_RENDERER_RENDERER_WEBKITPLATFORMSUPPORT_IMPL_H_
241