Home | History | Annotate | Download | only in encryptedmedia
      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