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

Unified Diff: chrome/browser/ui/webui/media/media_internals_proxy.cc

Issue 12153002: Move chrome://media-internals to content. This allows us to hide implementation details from the pu… (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 7 years, 11 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/webui/media/media_internals_proxy.cc
===================================================================
--- chrome/browser/ui/webui/media/media_internals_proxy.cc (revision 179909)
+++ chrome/browser/ui/webui/media/media_internals_proxy.cc (working copy)
@@ -1,178 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/ui/webui/media/media_internals_proxy.h"
-
-#include "base/bind.h"
-#include "chrome/browser/browser_process.h"
-#include "chrome/browser/io_thread.h"
-#include "chrome/browser/media/media_internals.h"
-#include "chrome/browser/net/chrome_net_log.h"
-#include "chrome/browser/ui/webui/media/media_internals_handler.h"
-#include "content/public/browser/notification_service.h"
-#include "content/public/browser/notification_types.h"
-#include "content/public/browser/render_process_host.h"
-#include "content/public/browser/web_ui.h"
-
-using content::BrowserThread;
-
-static const int kMediaInternalsProxyEventDelayMilliseconds = 100;
-
-static const net::NetLog::EventType kNetEventTypeFilter[] = {
- net::NetLog::TYPE_DISK_CACHE_ENTRY_IMPL,
- net::NetLog::TYPE_SPARSE_READ,
- net::NetLog::TYPE_SPARSE_WRITE,
- net::NetLog::TYPE_URL_REQUEST_START_JOB,
- net::NetLog::TYPE_HTTP_TRANSACTION_READ_RESPONSE_HEADERS,
-};
-
-MediaInternalsProxy::MediaInternalsProxy() {
- io_thread_ = g_browser_process->io_thread();
- registrar_.Add(this, content::NOTIFICATION_RENDERER_PROCESS_TERMINATED,
- content::NotificationService::AllBrowserContextsAndSources());
-}
-
-void MediaInternalsProxy::Observe(int type,
- const content::NotificationSource& source,
- const content::NotificationDetails& details) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- DCHECK_EQ(type, content::NOTIFICATION_RENDERER_PROCESS_TERMINATED);
- content::RenderProcessHost* process =
- content::Source<content::RenderProcessHost>(source).ptr();
- CallJavaScriptFunctionOnUIThread("media.onRendererTerminated",
- base::Value::CreateIntegerValue(process->GetID()));
-}
-
-void MediaInternalsProxy::Attach(MediaInternalsMessageHandler* handler) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- handler_ = handler;
- BrowserThread::PostTask(
- BrowserThread::IO, FROM_HERE,
- base::Bind(&MediaInternalsProxy::ObserveMediaInternalsOnIOThread, this));
-}
-
-void MediaInternalsProxy::Detach() {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- handler_ = NULL;
- BrowserThread::PostTask(
- BrowserThread::IO, FROM_HERE,
- base::Bind(
- &MediaInternalsProxy::StopObservingMediaInternalsOnIOThread, this));
-}
-
-void MediaInternalsProxy::GetEverything() {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
-
- // Ask MediaInternals for all its data.
- BrowserThread::PostTask(
- BrowserThread::IO, FROM_HERE,
- base::Bind(&MediaInternalsProxy::GetEverythingOnIOThread, this));
-
- // Send the page names for constants.
- CallJavaScriptFunctionOnUIThread("media.onReceiveConstants", GetConstants());
-}
-
-void MediaInternalsProxy::OnUpdate(const string16& update) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
- BrowserThread::PostTask(
- BrowserThread::UI, FROM_HERE,
- base::Bind(&MediaInternalsProxy::UpdateUIOnUIThread, this, update));
-}
-
-void MediaInternalsProxy::OnAddEntry(const net::NetLog::Entry& entry) {
- bool is_event_interesting = false;
- for (size_t i = 0; i < arraysize(kNetEventTypeFilter); i++) {
- if (entry.type() == kNetEventTypeFilter[i]) {
- is_event_interesting = true;
- break;
- }
- }
-
- if (!is_event_interesting)
- return;
-
- BrowserThread::PostTask(
- BrowserThread::UI, FROM_HERE,
- base::Bind(&MediaInternalsProxy::AddNetEventOnUIThread, this,
- entry.ToValue()));
-}
-
-MediaInternalsProxy::~MediaInternalsProxy() {}
-
-Value* MediaInternalsProxy::GetConstants() {
- DictionaryValue* event_phases = new DictionaryValue();
- event_phases->SetInteger(
- net::NetLog::EventPhaseToString(net::NetLog::PHASE_NONE),
- net::NetLog::PHASE_NONE);
- event_phases->SetInteger(
- net::NetLog::EventPhaseToString(net::NetLog::PHASE_BEGIN),
- net::NetLog::PHASE_BEGIN);
- event_phases->SetInteger(
- net::NetLog::EventPhaseToString(net::NetLog::PHASE_END),
- net::NetLog::PHASE_END);
-
- DictionaryValue* constants = new DictionaryValue();
- constants->Set("eventTypes", net::NetLog::GetEventTypesAsValue());
- constants->Set("eventPhases", event_phases);
-
- return constants;
-}
-
-void MediaInternalsProxy::ObserveMediaInternalsOnIOThread() {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
- MediaInternals::GetInstance()->AddObserver(this);
- io_thread_->net_log()->AddThreadSafeObserver(this,
- net::NetLog::LOG_ALL_BUT_BYTES);
-}
-
-void MediaInternalsProxy::StopObservingMediaInternalsOnIOThread() {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
- MediaInternals::GetInstance()->RemoveObserver(this);
- io_thread_->net_log()->RemoveThreadSafeObserver(this);
-}
-
-void MediaInternalsProxy::GetEverythingOnIOThread() {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
- MediaInternals::GetInstance()->SendEverything();
-}
-
-void MediaInternalsProxy::UpdateUIOnUIThread(const string16& update) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- // Don't forward updates to a destructed UI.
- if (handler_)
- handler_->OnUpdate(update);
-}
-
-void MediaInternalsProxy::AddNetEventOnUIThread(Value* entry) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
-
- // Send the updates to the page in kMediaInternalsProxyEventDelayMilliseconds
- // if an update is not already pending.
- if (!pending_net_updates_.get()) {
- pending_net_updates_.reset(new ListValue());
- MessageLoop::current()->PostDelayedTask(
- FROM_HERE,
- base::Bind(
- &MediaInternalsProxy::SendNetEventsOnUIThread, this),
- base::TimeDelta::FromMilliseconds(
- kMediaInternalsProxyEventDelayMilliseconds));
- }
- pending_net_updates_->Append(entry);
-}
-
-void MediaInternalsProxy::SendNetEventsOnUIThread() {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- CallJavaScriptFunctionOnUIThread("media.onNetUpdate",
- pending_net_updates_.release());
-}
-
-void MediaInternalsProxy::CallJavaScriptFunctionOnUIThread(
- const std::string& function, Value* args) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- scoped_ptr<Value> args_value(args);
- std::vector<const Value*> args_vector;
- args_vector.push_back(args_value.get());
- string16 update = content::WebUI::GetJavascriptCall(function, args_vector);
- UpdateUIOnUIThread(update);
-}

Powered by Google App Engine
This is Rietveld 408576698