1 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef MediaKeysController_h 6 #define MediaKeysController_h 7 8 #include "core/page/Page.h" 9 #include "wtf/PassOwnPtr.h" 10 11 namespace blink { 12 class WebContentDecryptionModule; 13 } 14 15 namespace WebCore { 16 17 class ExecutionContext; 18 class MediaKeysClient; 19 20 class MediaKeysController FINAL : public NoBaseWillBeGarbageCollected<MediaKeysController>, public WillBeHeapSupplement<Page> { 21 WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(MediaKeysController); 22 public: 23 PassOwnPtr<blink::WebContentDecryptionModule> createContentDecryptionModule(ExecutionContext*, const String& keySystem); 24 25 static void provideMediaKeysTo(Page&, MediaKeysClient*); 26 static MediaKeysController* from(Page* page) { return static_cast<MediaKeysController*>(WillBeHeapSupplement<Page>::from(page, supplementName())); } 27 28 virtual void trace(Visitor* visitor) OVERRIDE { WillBeHeapSupplement<Page>::trace(visitor); } 29 30 private: 31 explicit MediaKeysController(MediaKeysClient*); 32 static const char* supplementName(); 33 MediaKeysClient* m_client; 34 }; 35 36 } // namespace WebCore 37 38 #endif // MediaKeysController_h 39 40