| Index: chrome/browser/ui/webui/media_internals_ui.cc
|
| diff --git a/chrome/browser/ui/webui/media_internals_ui.cc b/chrome/browser/ui/webui/media_internals_ui.cc
|
| index de2f4227113effe68db6fbd58a91fd8c1faac324..161cdf6cb9584c93e2a918416d0254ac33935108 100644
|
| --- a/chrome/browser/ui/webui/media_internals_ui.cc
|
| +++ b/chrome/browser/ui/webui/media_internals_ui.cc
|
| @@ -6,6 +6,9 @@
|
|
|
| #include "base/memory/ref_counted_memory.h"
|
| #include "base/values.h"
|
| +#include "chrome/browser/browser_process.h"
|
| +#include "chrome/browser/io_thread.h"
|
| +#include "chrome/browser/media/media_internals.h"
|
| #include "chrome/browser/profiles/profile.h"
|
| #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h"
|
| #include "chrome/browser/ui/webui/chrome_url_data_manager.h"
|
| @@ -71,6 +74,60 @@ std::string MediaInternalsHTMLSource::GetMimeType(
|
|
|
| } // namespace
|
|
|
| +////////////////////////////////////////////////////////////////////////////////
|
| +//
|
| +// MediaInternalsProxy
|
| +//
|
| +////////////////////////////////////////////////////////////////////////////////
|
| +
|
| +MediaInternalsProxy::MediaInternalsProxy() {
|
| + io_thread_ = g_browser_process->io_thread();
|
| +};
|
| +
|
| +void MediaInternalsProxy::SetUI(MediaInternalsUI* ui) {
|
| + ui_ = ui;
|
| + BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
|
| + NewRunnableMethod(this,
|
| + &MediaInternalsProxy::ObserveMediaInternalsOnIOThread));
|
| +};
|
| +
|
| +void MediaInternalsProxy::RemoveUI() {
|
| + ui_ = NULL;
|
| + BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
|
| + NewRunnableMethod(this,
|
| + &MediaInternalsProxy::StopObservingMediaInternalsOnIOThread));
|
| +}
|
| +
|
| +void MediaInternalsProxy::GetEverything() {
|
| + BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
|
| + NewRunnableMethod(this, &MediaInternalsProxy::GetEverythingOnIOThread));
|
| +}
|
| +
|
| +void MediaInternalsProxy::OnUpdate(const string16& update) {
|
| + BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
|
| + NewRunnableMethod(this,
|
| + &MediaInternalsProxy::UpdateUIOnUIThread, update));
|
| +}
|
| +
|
| +MediaInternalsProxy::~MediaInternalsProxy() {}
|
| +
|
| +void MediaInternalsProxy::ObserveMediaInternalsOnIOThread() {
|
| + io_thread_->globals()->media.media_internals->AddUI(this);
|
| +}
|
| +
|
| +void MediaInternalsProxy::StopObservingMediaInternalsOnIOThread() {
|
| + io_thread_->globals()->media.media_internals->RemoveUI(this);
|
| +}
|
| +
|
| +void MediaInternalsProxy::GetEverythingOnIOThread() {
|
| + io_thread_->globals()->media.media_internals->SendEverything();
|
| +}
|
| +
|
| +void MediaInternalsProxy::UpdateUIOnUIThread(const string16& update) {
|
| + // Don't forward updates to a destructed UI.
|
| + if (ui_)
|
| + ui_->OnUpdate(update);
|
| +}
|
|
|
| ////////////////////////////////////////////////////////////////////////////////
|
| //
|
| @@ -79,8 +136,24 @@ std::string MediaInternalsHTMLSource::GetMimeType(
|
| ////////////////////////////////////////////////////////////////////////////////
|
|
|
| MediaInternalsUI::MediaInternalsUI(TabContents* contents)
|
| - : ChromeWebUI(contents) {
|
| + : ChromeWebUI(contents),
|
| + proxy_(new MediaInternalsProxy()){
|
| contents->profile()->GetChromeURLDataManager()->AddDataSource(
|
| new MediaInternalsHTMLSource());
|
| + proxy_->SetUI(this);
|
| +}
|
| +
|
| +MediaInternalsUI::~MediaInternalsUI() {
|
| + proxy_->RemoveUI();
|
| }
|
|
|
| +void MediaInternalsUI::OnWebUISend(const GURL& source_url,
|
| + const std::string& name,
|
| + const ListValue& content) {
|
| + if (name == "getAll")
|
| + proxy_->GetEverything();
|
| +}
|
| +
|
| +void MediaInternalsUI::OnUpdate(const string16& update) {
|
| + ExecuteJavascript(update);
|
| +}
|
|
|