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

Unified Diff: chrome/browser/tab_contents/network_status_view.cc

Issue 18728: Create a dialog box for the about:network view and kill the tab type.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 11 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/tab_contents/network_status_view.cc
===================================================================
--- chrome/browser/tab_contents/network_status_view.cc (revision 8567)
+++ chrome/browser/tab_contents/network_status_view.cc (working copy)
@@ -1,320 +0,0 @@
-// Copyright (c) 2006-2008 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/tab_contents/network_status_view.h"
-
-#include <stdio.h>
-
-#include "base/string_util.h"
-#include "base/thread.h"
-#include "chrome/browser/browser.h"
-#include "chrome/browser/browser_process.h"
-#include "chrome/browser/tab_contents/tab_contents_delegate.h"
-#include "chrome/views/root_view.h"
-#include "net/url_request/url_request.h"
-#include "net/url_request/url_request_job.h"
-
-namespace {
-const wchar_t kTitleMsg[] = L"Network Status";
-const wchar_t kStartTrackingMsg[] = L"Start I/O Tracking";
-const wchar_t kStopTrackingMsg[] = L"Stop I/O Tracking";
-
-const wchar_t kShowIOStatusMsg[] = L"Show Current I/O Status";
-const wchar_t kClearOutputMsg[] = L"Clear Output";
-
-// Returns a string representing the URL, handling the case where the spec
-// is invalid.
-std::wstring StringForURL(const GURL& url) {
- if (url.is_valid())
- return UTF8ToWide(url.spec());
- return UTF8ToWide(url.possibly_invalid_spec()) + L" (invalid)";
-}
-
-std::wstring URLForJob(URLRequestJob* job) {
- URLRequest* request = job->request();
- if (request)
- return StringForURL(request->url());
- return std::wstring(L"(orphaned)");
-}
-
-} // namespace
-
-NetworkStatusView::NetworkStatusView()
- : StatusView(TAB_CONTENTS_NETWORK_STATUS_VIEW) {
- tracker_ = new JobTracker(this);
-}
-
-NetworkStatusView::~NetworkStatusView() {
- if (monospaced_font_)
- DeleteObject(monospaced_font_);
-
- if (is_tracking_) {
- tracker_->StopTracking();
- is_tracking_ = false;
- }
-
- tracker_->DetachView();
-}
-
-const std::wstring NetworkStatusView::GetDefaultTitle() {
- return kTitleMsg;
-}
-
-void NetworkStatusView::OnCreate(const CRect& rect) {
- CreateButton(IDC_CONFIG_TRACKING_BUTTON, kStartTrackingMsg);
- CreateButton(IDC_CURRENT_STATUS_BUTTON, kShowIOStatusMsg);
- CreateButton(IDC_CLEAR, kClearOutputMsg);
-
- is_tracking_ = false;
-
- // Initialize the text box for network tracking
- // Don't worry about the size, we'll resize when we get WM_SIZE
- text_area_.Create(m_hWnd, const_cast<CRect&>(rect), NULL,
- WS_CHILD | WS_HSCROLL | WS_VSCROLL |
- ES_MULTILINE | ES_AUTOHSCROLL | ES_AUTOVSCROLL, 0);
-
- // This raises the maximum number of chars from 32K to some large maximum,
- // probably 2GB. 32K is not nearly enough for our use-case.
- text_area_.SendMessageW(EM_SETLIMITTEXT, 0, 0);
-
- // make a monospaced font for the edit control
- LOGFONT lf = {0};
- lf.lfHeight = 16;
- wcscpy_s(lf.lfFaceName, LF_FACESIZE, L"Courier New");
- monospaced_font_ = CreateFontIndirect(&lf);
- text_area_.SetFont(monospaced_font_);
-}
-
-void NetworkStatusView::OnSize(const CRect& rect) {
- // re-layout the edit control
- text_area_.MoveWindow(rect);
-
- // re-layout the performance view
- CRect new_rect(rect);
- int list_width = rect.Width();
- int list_height = static_cast<int>(rect.Height() / 5);
- int page_width = rect.Width() / 2;
- int page_height = static_cast<int>(rect.Height() * 4 / 5);
-}
-
-void NetworkStatusView::OnConfigTrackingClicked(UINT code, int button_id,
- HWND hwnd) {
- if (is_tracking_) {
- tracker_->StopTracking();
- is_tracking_ = false;
-
- SetButtonText(IDC_CONFIG_TRACKING_BUTTON, kStartTrackingMsg);
- } else {
- tracker_->StartTracking();
- is_tracking_ = true;
-
- ClearTrackingResults();
- ShowTrackingResults();
-
- SetButtonText(IDC_CONFIG_TRACKING_BUTTON, kStopTrackingMsg);
- }
-}
-
-void NetworkStatusView::OnCurrentStatusClicked(UINT code, int button_id,
- HWND hwnd) {
- ShowTrackingResults();
- if (is_tracking_) {
- tracker_->ReportStatus();
- }
-}
-
-void NetworkStatusView::OnClearClicked(UINT code, int button_id, HWND hwnd) {
- ClearTrackingResults();
-}
-
-void NetworkStatusView::AppendText(const std::wstring& text) {
- text_area_.AppendText(text.c_str());
-}
-
-void NetworkStatusView::HideTrackingResults() {
- text_area_.ShowWindow(SW_HIDE);
-}
-
-void NetworkStatusView::ShowTrackingResults() {
- text_area_.ShowWindow(SW_SHOW);
-}
-
-void NetworkStatusView::ClearTrackingResults() {
- text_area_.SetSelAll();
- text_area_.Clear();
-}
-
-//-----------------------------------------------------------------------------
-
-// main thread:
-NetworkStatusView::JobTracker::JobTracker(NetworkStatusView* view)
- : view_(view),
- view_message_loop_(MessageLoop::current()) {
-}
-
-// main thread:
-void NetworkStatusView::JobTracker::InvokeOnIOThread(void (JobTracker::*m)()) {
- base::Thread* thread = g_browser_process->io_thread();
- if (!thread)
- return;
- thread->message_loop()->PostTask(FROM_HERE, NewRunnableMethod(this, m));
-}
-
-// main thread:
-void NetworkStatusView::JobTracker::StartTracking() {
- DCHECK(MessageLoop::current() == view_message_loop_);
- DCHECK(view_);
- InvokeOnIOThread(&JobTracker::OnStartTracking);
-}
-
-// main thread:
-void NetworkStatusView::JobTracker::StopTracking() {
- DCHECK(MessageLoop::current() == view_message_loop_);
- // The tracker should not be deleted before it is removed from observer
- // list.
- AddRef();
- InvokeOnIOThread(&JobTracker::OnStopTracking);
-}
-
-// main thread:
-void NetworkStatusView::JobTracker::ReportStatus() {
- DCHECK(MessageLoop::current() == view_message_loop_);
- InvokeOnIOThread(&JobTracker::OnReportStatus);
-}
-
-// main thread:
-void NetworkStatusView::JobTracker::OnAppendText(const std::wstring& text) {
- DCHECK(MessageLoop::current() == view_message_loop_);
- if (view_ && view_->is_tracking_)
- view_->AppendText(text);
-}
-
-// IO thread:
-void NetworkStatusView::JobTracker::AppendText(const std::wstring& text) {
- DCHECK(MessageLoop::current() != view_message_loop_);
- view_message_loop_->PostTask(FROM_HERE, NewRunnableMethod(
- this, &JobTracker::OnAppendText, text));
-}
-
-// IO thread:
-void NetworkStatusView::JobTracker::OnStartTracking() {
- DCHECK(MessageLoop::current() != view_message_loop_);
- g_url_request_job_tracker.AddObserver(this);
-}
-
-// IO thread:
-void NetworkStatusView::JobTracker::OnStopTracking() {
- DCHECK(MessageLoop::current() != view_message_loop_);
- g_url_request_job_tracker.RemoveObserver(this);
- // Balance the AddRef() in StopTracking() called in main thread.
- Release();
-}
-
-// IO thread:
-void NetworkStatusView::JobTracker::OnReportStatus() {
- DCHECK(MessageLoop::current() != view_message_loop_);
-
- std::wstring text(L"\r\n===== Active Job Summary =====\r\n");
-
- URLRequestJobTracker::JobIterator begin_job =
- g_url_request_job_tracker.begin();
- URLRequestJobTracker::JobIterator end_job = g_url_request_job_tracker.end();
- int orphaned_count = 0;
- int regular_count = 0;
- for (URLRequestJobTracker::JobIterator cur = begin_job;
- cur != end_job; ++cur) {
- URLRequestJob* job = (*cur);
- URLRequest* request = job->request();
- if (!request) {
- orphaned_count++;
- continue;
- }
-
- regular_count++;
-
- // active state
- if (job->is_done())
- text.append(L" Done: ");
- else
- text.append(L" Active: ");
-
- // URL
- text.append(StringForURL(request->url()));
- text.append(L"\r\n");
- }
-
- if (regular_count == 0)
- text.append(L" (No active jobs)\r\n");
-
- if (orphaned_count) {
- wchar_t buf[64];
- swprintf(buf, arraysize(buf), L" %d orphaned jobs\r\n", orphaned_count);
- text.append(buf);
- }
-
- text.append(L"=====\r\n\r\n");
- AppendText(text);
-}
-
-// IO thread:
-void NetworkStatusView::JobTracker::OnJobAdded(URLRequestJob* job) {
- DCHECK(MessageLoop::current() != view_message_loop_);
-
- std::wstring text(L"+ New job : ");
- text.append(URLForJob(job));
- text.append(L"\r\n");
- AppendText(text);
-}
-
-// IO thread:
-void NetworkStatusView::JobTracker::OnJobRemoved(URLRequestJob* job) {
- DCHECK(MessageLoop::current() != view_message_loop_);
-}
-
-// IO thread:
-void NetworkStatusView::JobTracker::OnJobDone(URLRequestJob* job,
- const URLRequestStatus& status) {
- DCHECK(MessageLoop::current() != view_message_loop_);
-
- std::wstring text;
- if (status.is_success()) {
- text.assign(L"- Complete: ");
- } else if (status.status() == URLRequestStatus::CANCELED) {
- text.assign(L"- Canceled: ");
- } else if (status.status() == URLRequestStatus::HANDLED_EXTERNALLY) {
- text.assign(L"- Handled externally: ");
- } else {
- wchar_t buf[32];
- swprintf(buf, arraysize(buf), L"Failed with %d: ", status.os_error());
- text.assign(buf);
- }
-
- text.append(URLForJob(job));
- text.append(L"\r\n");
- AppendText(text);
-}
-
-// IO thread:
-void NetworkStatusView::JobTracker::OnJobRedirect(URLRequestJob* job,
- const GURL& location,
- int status_code) {
- DCHECK(MessageLoop::current() != view_message_loop_);
-
- std::wstring text(L"- Redirect: ");
- text.append(URLForJob(job));
- text.append(L"\r\n ");
-
- wchar_t buf[16];
- swprintf(buf, arraysize(buf), L"(%d) to: ", status_code);
- text.append(buf);
-
- text.append(StringForURL(location));
- text.append(L"\r\n");
- AppendText(text);
-}
-
-void NetworkStatusView::JobTracker::OnBytesRead(URLRequestJob* job,
- int byte_count) {
-}
-

Powered by Google App Engine
This is Rietveld 408576698