OLD | NEW |
---|---|
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/browser/media/cdm/browser_cdm_manager.h" | 5 #include "content/browser/media/cdm/browser_cdm_manager.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/lazy_instance.h" | 10 #include "base/lazy_instance.h" |
11 #include "base/memory/scoped_ptr.h" | 11 #include "base/memory/scoped_ptr.h" |
12 #include "base/task_runner.h" | 12 #include "base/task_runner.h" |
13 #include "content/public/browser/browser_context.h" | 13 #include "content/public/browser/browser_context.h" |
14 #include "content/public/browser/browser_thread.h" | 14 #include "content/public/browser/browser_thread.h" |
15 #include "content/public/browser/content_browser_client.h" | 15 #include "content/public/browser/content_browser_client.h" |
16 #include "content/public/browser/permission_manager.h" | 16 #include "content/public/browser/permission_manager.h" |
17 #include "content/public/browser/permission_type.h" | 17 #include "content/public/browser/permission_type.h" |
18 #include "content/public/browser/render_frame_host.h" | 18 #include "content/public/browser/render_frame_host.h" |
19 #include "content/public/browser/render_process_host.h" | 19 #include "content/public/browser/render_process_host.h" |
20 #include "content/public/browser/render_process_host_observer.h" | 20 #include "content/public/browser/render_process_host_observer.h" |
21 #include "content/public/browser/web_contents.h" | 21 #include "content/public/browser/web_contents.h" |
22 #include "media/base/browser_cdm.h" | 22 #include "media/base/browser_cdm.h" |
23 #include "media/base/browser_cdm_factory.h" | 23 #include "media/base/browser_cdm_factory.h" |
24 #include "media/base/cdm_promise.h" | 24 #include "media/base/cdm_promise.h" |
25 #include "media/base/limits.h" | 25 #include "media/base/limits.h" |
26 | 26 |
27 #if defined(OS_ANDROID) | 27 #if defined(OS_ANDROID) |
28 #include "content/public/browser/android/cdm_provision_fetcher.h" | |
28 #include "content/public/common/renderer_preferences.h" | 29 #include "content/public/common/renderer_preferences.h" |
29 #endif | 30 #endif |
30 | 31 |
31 namespace content { | 32 namespace content { |
32 | 33 |
33 using media::BrowserCdm; | 34 using media::BrowserCdm; |
34 using media::MediaKeys; | 35 using media::MediaKeys; |
35 using media::ScopedBrowserCdmPtr; | 36 using media::ScopedBrowserCdmPtr; |
36 | 37 |
37 namespace { | 38 namespace { |
(...skipping 494 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
532 | 533 |
533 void BrowserCdmManager::AddCdm(int render_frame_id, | 534 void BrowserCdmManager::AddCdm(int render_frame_id, |
534 int cdm_id, | 535 int cdm_id, |
535 uint32_t promise_id, | 536 uint32_t promise_id, |
536 const std::string& key_system, | 537 const std::string& key_system, |
537 const GURL& security_origin, | 538 const GURL& security_origin, |
538 bool use_hw_secure_codecs) { | 539 bool use_hw_secure_codecs) { |
539 DCHECK(task_runner_->RunsTasksOnCurrentThread()); | 540 DCHECK(task_runner_->RunsTasksOnCurrentThread()); |
540 DCHECK(!GetCdm(render_frame_id, cdm_id)); | 541 DCHECK(!GetCdm(render_frame_id, cdm_id)); |
541 | 542 |
543 scoped_ptr<media::ProvisionFetcher> provision_fetcher; | |
544 | |
545 #if defined(OS_ANDROID) | |
546 net::URLRequestContextGetter* context = | |
547 RenderProcessHost::FromID(render_process_id_) | |
548 ->GetBrowserContext() | |
549 ->GetRequestContext(); | |
550 DCHECK(context); | |
551 provision_fetcher = CDMProvisionFetcher::CreateWithURLContext(context); | |
xhwang
2015/11/06 23:08:18
Can you just create a URLProvisionFetch directly h
Tima Vaisburd
2015/11/11 03:03:34
Done.
| |
552 #endif | |
553 | |
542 scoped_ptr<SimplePromise> promise(new SimplePromise( | 554 scoped_ptr<SimplePromise> promise(new SimplePromise( |
543 weak_ptr_factory_.GetWeakPtr(), render_frame_id, cdm_id, promise_id)); | 555 weak_ptr_factory_.GetWeakPtr(), render_frame_id, cdm_id, promise_id)); |
544 | 556 |
545 ScopedBrowserCdmPtr cdm(media::CreateBrowserCdm( | 557 ScopedBrowserCdmPtr cdm(media::CreateBrowserCdm( |
546 key_system, use_hw_secure_codecs, | 558 key_system, use_hw_secure_codecs, provision_fetcher.Pass(), |
Tima Vaisburd
2015/11/05 02:24:07
I pass |provision_fetcher| here as a parameter, an
Tima Vaisburd
2015/11/05 02:28:54
An alternative could be adding another factory met
xhwang
2015/11/06 23:08:19
See comments above.
ProvisionFetcher is only used
Tima Vaisburd
2015/11/11 03:03:34
Done.
xhwang
2015/11/11 09:53:21
MediaClients are consumed by media/, which has no
Tima Vaisburd
2015/11/11 23:26:35
MediaClient is not used for the provisioning purpo
| |
547 BROWSER_CDM_MANAGER_CB(OnSessionMessage), | 559 BROWSER_CDM_MANAGER_CB(OnSessionMessage), |
548 BROWSER_CDM_MANAGER_CB(OnSessionClosed), | 560 BROWSER_CDM_MANAGER_CB(OnSessionClosed), |
549 BROWSER_CDM_MANAGER_CB(OnLegacySessionError), | 561 BROWSER_CDM_MANAGER_CB(OnLegacySessionError), |
550 BROWSER_CDM_MANAGER_CB(OnSessionKeysChange), | 562 BROWSER_CDM_MANAGER_CB(OnSessionKeysChange), |
551 BROWSER_CDM_MANAGER_CB(OnSessionExpirationUpdate))); | 563 BROWSER_CDM_MANAGER_CB(OnSessionExpirationUpdate))); |
552 | 564 |
553 if (!cdm) { | 565 if (!cdm) { |
554 DVLOG(1) << "failed to create CDM."; | 566 DVLOG(1) << "failed to create CDM."; |
555 promise->reject(MediaKeys::INVALID_STATE_ERROR, 0, "Failed to create CDM."); | 567 promise->reject(MediaKeys::INVALID_STATE_ERROR, 0, "Failed to create CDM."); |
556 return; | 568 return; |
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
681 BrowserCdm* cdm = GetCdm(render_frame_id, cdm_id); | 693 BrowserCdm* cdm = GetCdm(render_frame_id, cdm_id); |
682 if (!cdm) { | 694 if (!cdm) { |
683 promise->reject(MediaKeys::INVALID_STATE_ERROR, 0, "CDM not found."); | 695 promise->reject(MediaKeys::INVALID_STATE_ERROR, 0, "CDM not found."); |
684 return; | 696 return; |
685 } | 697 } |
686 | 698 |
687 cdm->LoadSession(session_type, session_id, promise.Pass()); | 699 cdm->LoadSession(session_type, session_id, promise.Pass()); |
688 } | 700 } |
689 | 701 |
690 } // namespace content | 702 } // namespace content |
OLD | NEW |