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

Side by Side Diff: content/browser/media/cdm/browser_cdm_manager.cc

Issue 733533002: Do not start RunLoop of MessagePumpForUI in NestedMessagePumpAndroid (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Skip quit request when loop isn't running Created 6 years, 1 month 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
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 "base/bind.h" 7 #include "base/bind.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/lazy_instance.h" 9 #include "base/lazy_instance.h"
10 #include "base/task_runner.h" 10 #include "base/task_runner.h"
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
74 // This may overwrite an existing entry of |render_process_id| if the 74 // This may overwrite an existing entry of |render_process_id| if the
75 // previous process crashed and didn't cleanup its child frames. For example, 75 // previous process crashed and didn't cleanup its child frames. For example,
76 // see FrameTreeBrowserTest.FrameTreeAfterCrash test. 76 // see FrameTreeBrowserTest.FrameTreeAfterCrash test.
77 g_browser_cdm_manager_map.Get()[render_process_id] = this; 77 g_browser_cdm_manager_map.Get()[render_process_id] = this;
78 } 78 }
79 79
80 BrowserCdmManager::~BrowserCdmManager() { 80 BrowserCdmManager::~BrowserCdmManager() {
81 DCHECK_CURRENTLY_ON(BrowserThread::UI); 81 DCHECK_CURRENTLY_ON(BrowserThread::UI);
82 DCHECK(g_browser_cdm_manager_map.Get().count(render_process_id_)); 82 DCHECK(g_browser_cdm_manager_map.Get().count(render_process_id_));
83 83
84 g_browser_cdm_manager_map.Get().erase(render_process_id_); 84 // If an entry of |render_process_id| was overwritten, we shouldn't remove
85 // the entry. For example, see FrameTreeBrowserTest.FrameTreeAfterCrash test,
86 // and http://crbug.com/430251.
87 if (g_browser_cdm_manager_map.Get()[render_process_id_] == this)
Sami 2014/11/18 12:02:25 Should this change be in a different patch? It see
ncarter (slow) 2014/11/18 18:02:53 I believe the fix (which runs some DeleteSoons tha
Jaekyun Seok (inactive) 2014/11/18 22:38:22 Right, this fix exposes the same issue to bug 4302
88 g_browser_cdm_manager_map.Get().erase(render_process_id_);
85 } 89 }
86 90
87 // Makes sure BrowserCdmManager is always deleted on the Browser UI thread. 91 // Makes sure BrowserCdmManager is always deleted on the Browser UI thread.
88 void BrowserCdmManager::OnDestruct() const { 92 void BrowserCdmManager::OnDestruct() const {
89 if (BrowserThread::CurrentlyOn(BrowserThread::UI)) { 93 if (BrowserThread::CurrentlyOn(BrowserThread::UI)) {
90 delete this; 94 delete this;
91 } else { 95 } else {
92 BrowserThread::DeleteSoon(BrowserThread::UI, FROM_HERE, this); 96 BrowserThread::DeleteSoon(BrowserThread::UI, FROM_HERE, this);
93 } 97 }
94 } 98 }
(...skipping 279 matching lines...) Expand 10 before | Expand all | Expand 10 after
374 DLOG(WARNING) << "No CDM found for: " << render_frame_id << ", " << cdm_id; 378 DLOG(WARNING) << "No CDM found for: " << render_frame_id << ", " << cdm_id;
375 SendSessionError(render_frame_id, cdm_id, session_id); 379 SendSessionError(render_frame_id, cdm_id, session_id);
376 return; 380 return;
377 } 381 }
378 382
379 // This could fail, in which case a SessionError will be fired. 383 // This could fail, in which case a SessionError will be fired.
380 cdm->CreateSession(session_id, content_type, &init_data[0], init_data.size()); 384 cdm->CreateSession(session_id, content_type, &init_data[0], init_data.size());
381 } 385 }
382 386
383 } // namespace content 387 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698