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

Side by Side Diff: Source/core/html/MediaProvider.cpp

Issue 545933002: Implement HTMLMediaElement::srcObject. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Addressed sofs easy comments. Created 6 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
(Empty)
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 #include "config.h"
6 #include "core/html/MediaProvider.h"
7
8 #include "wtf/HashMap.h"
9 #include "wtf/MainThread.h"
10 #include "wtf/text/StringHash.h"
11
12 namespace blink {
13
14 class MediaProviderConverterContainer {
15 public:
16 static MediaProviderConverterContainer& container();
17
18 void registerMediaProviderConverter(const String& interfaceName, const Media Provider::Converter&);
19 virtual MediaProvider* convert(const ScriptValue&);
20
21 private:
22 HashMap<String, MediaProvider::Converter> m_converters;
23 };
24
25 MediaProviderConverterContainer& MediaProviderConverterContainer::container()
26 {
27 ASSERT(isMainThread());
28 DEFINE_STATIC_LOCAL(MediaProviderConverterContainer, instance, ());
29 return instance;
30 }
31
32 void MediaProviderConverterContainer::registerMediaProviderConverter(const Strin g& interfaceName, const MediaProvider::Converter& converter)
33 {
34 if (m_converters.get(interfaceName).isNull())
35 m_converters.set(interfaceName, converter);
36 }
37
38 MediaProvider* MediaProviderConverterContainer::convert(const ScriptValue& value )
39 {
40 for (HashMap<String, MediaProvider::Converter>::iterator it = m_converters.b egin(); it != m_converters.end(); ++it) {
41 MediaProvider* provider = (it->value)(value);
42 if (provider)
43 return provider;
44 }
45 return nullptr;
46 }
47
48 MediaProvider::MediaProvider(const String& interfaceName, const Converter& conve rter)
49 {
50 MediaProviderConverterContainer& container = MediaProviderConverterContainer ::container();
51 container.registerMediaProviderConverter(interfaceName, converter);
haraken 2014/09/20 08:52:20 Don't we need to unregister the convert at some po
perkj_chrome 2014/09/24 11:39:38 I don't think so since what we register is the sta
52 }
53
54 MediaProvider* MediaProvider::convert(const ScriptValue& value)
55 {
56 MediaProviderConverterContainer& container = MediaProviderConverterContainer ::container();
57 return container.convert(value);
58 }
59
60 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698