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

Side by Side Diff: chrome/browser/ui/views/frame/browser_view.cc

Issue 1815623004: Remove Hung plugin detector (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@remove_windowed_plugins
Patch Set: fix compile Created 4 years, 9 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 unified diff | Download patch
« no previous file with comments | « chrome/browser/ui/views/frame/browser_view.h ('k') | chrome/chrome_browser.gypi » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 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 "chrome/browser/ui/views/frame/browser_view.h" 5 #include "chrome/browser/ui/views/frame/browser_view.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 #include <algorithm> 8 #include <algorithm>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 445 matching lines...) Expand 10 before | Expand all | Expand 10 after
456 tabstrip_(nullptr), 456 tabstrip_(nullptr),
457 toolbar_(nullptr), 457 toolbar_(nullptr),
458 find_bar_host_view_(nullptr), 458 find_bar_host_view_(nullptr),
459 infobar_container_(nullptr), 459 infobar_container_(nullptr),
460 contents_web_view_(nullptr), 460 contents_web_view_(nullptr),
461 devtools_web_view_(nullptr), 461 devtools_web_view_(nullptr),
462 contents_container_(nullptr), 462 contents_container_(nullptr),
463 initialized_(false), 463 initialized_(false),
464 handling_theme_changed_(false), 464 handling_theme_changed_(false),
465 in_process_fullscreen_(false), 465 in_process_fullscreen_(false),
466 #if defined(OS_WIN)
467 // TODO(piman): is this still useful now that windowed plugins are gone?
468 ticker_(0),
469 hung_window_detector_(&hung_plugin_action_),
470 #endif
471 force_location_bar_focus_(false), 466 force_location_bar_focus_(false),
472 activate_modal_dialog_factory_(this) { 467 activate_modal_dialog_factory_(this) {
473 } 468 }
474 469
475 BrowserView::~BrowserView() { 470 BrowserView::~BrowserView() {
476 // All the tabs should have been destroyed already. If we were closed by the 471 // All the tabs should have been destroyed already. If we were closed by the
477 // OS with some tabs than the NativeBrowserFrame should have destroyed them. 472 // OS with some tabs than the NativeBrowserFrame should have destroyed them.
478 DCHECK_EQ(0, browser_->tab_strip_model()->count()); 473 DCHECK_EQ(0, browser_->tab_strip_model()->count());
479 474
480 // Immersive mode may need to reparent views before they are removed/deleted. 475 // Immersive mode may need to reparent views before they are removed/deleted.
481 immersive_mode_controller_.reset(); 476 immersive_mode_controller_.reset();
482 477
483 browser_->tab_strip_model()->RemoveObserver(this); 478 browser_->tab_strip_model()->RemoveObserver(this);
484 479
485 #if defined(OS_WIN) 480 #if defined(OS_WIN)
486 // Stop hung plugin monitoring.
487 ticker_.Stop();
488 ticker_.UnregisterTickHandler(&hung_window_detector_);
489
490 // Terminate the jumplist (must be called before browser_->profile() is 481 // Terminate the jumplist (must be called before browser_->profile() is
491 // destroyed. 482 // destroyed.
492 if (jumplist_.get()) { 483 if (jumplist_.get()) {
493 jumplist_->Terminate(); 484 jumplist_->Terminate();
494 } 485 }
495 #endif 486 #endif
496 487
497 // We destroy the download shelf before |browser_| to remove its child 488 // We destroy the download shelf before |browser_| to remove its child
498 // download views from the set of download observers (since the observed 489 // download views from the set of download observers (since the observed
499 // downloads can be destroyed along with |browser_| and the observer 490 // downloads can be destroyed along with |browser_| and the observer
(...skipping 1564 matching lines...) Expand 10 before | Expand all | Expand 10 after
2064 2055
2065 // Stow a pointer to this object onto the window handle so that we can get at 2056 // Stow a pointer to this object onto the window handle so that we can get at
2066 // it later when all we have is a native view. 2057 // it later when all we have is a native view.
2067 GetWidget()->SetNativeWindowProperty(kBrowserViewKey, this); 2058 GetWidget()->SetNativeWindowProperty(kBrowserViewKey, this);
2068 2059
2069 // Stow a pointer to the browser's profile onto the window handle so that we 2060 // Stow a pointer to the browser's profile onto the window handle so that we
2070 // can get it later when all we have is a native view. 2061 // can get it later when all we have is a native view.
2071 GetWidget()->SetNativeWindowProperty(Profile::kProfileKey, 2062 GetWidget()->SetNativeWindowProperty(Profile::kProfileKey,
2072 browser_->profile()); 2063 browser_->profile());
2073 2064
2074 // Start a hung plugin window detector for this browser object (as long as
2075 // hang detection is not disabled).
2076 if (!base::CommandLine::ForCurrentProcess()->HasSwitch(
2077 switches::kDisableHangMonitor)) {
2078 InitHangMonitor();
2079 }
2080
2081 LoadAccelerators(); 2065 LoadAccelerators();
2082 2066
2083 contents_web_view_ = new ContentsWebView(browser_->profile()); 2067 contents_web_view_ = new ContentsWebView(browser_->profile());
2084 contents_web_view_->set_id(VIEW_ID_TAB_CONTAINER); 2068 contents_web_view_->set_id(VIEW_ID_TAB_CONTAINER);
2085 contents_web_view_->SetEmbedFullscreenWidgetMode(true); 2069 contents_web_view_->SetEmbedFullscreenWidgetMode(true);
2086 2070
2087 web_contents_close_handler_.reset( 2071 web_contents_close_handler_.reset(
2088 new WebContentsCloseHandler(contents_web_view_)); 2072 new WebContentsCloseHandler(contents_web_view_));
2089 2073
2090 devtools_web_view_ = new views::WebView(browser_->profile()); 2074 devtools_web_view_ = new views::WebView(browser_->profile());
(...skipping 363 matching lines...) Expand 10 before | Expand all | Expand 10 after
2454 case APPCOMMAND_REDO: 2438 case APPCOMMAND_REDO:
2455 case APPCOMMAND_SPELL_CHECK: 2439 case APPCOMMAND_SPELL_CHECK:
2456 default: return -1; 2440 default: return -1;
2457 } 2441 }
2458 #else 2442 #else
2459 // App commands are Windows-specific so there's nothing to do here. 2443 // App commands are Windows-specific so there's nothing to do here.
2460 return -1; 2444 return -1;
2461 #endif 2445 #endif
2462 } 2446 }
2463 2447
2464 void BrowserView::InitHangMonitor() {
2465 #if defined(OS_WIN)
2466 PrefService* pref_service = g_browser_process->local_state();
2467 if (!pref_service)
2468 return;
2469
2470 int plugin_message_response_timeout =
2471 pref_service->GetInteger(prefs::kPluginMessageResponseTimeout);
2472 int hung_plugin_detect_freq =
2473 pref_service->GetInteger(prefs::kHungPluginDetectFrequency);
2474 HWND window = GetWidget()->GetNativeView()->GetHost()->
2475 GetAcceleratedWidget();
2476 if ((hung_plugin_detect_freq > 0) &&
2477 hung_window_detector_.Initialize(window,
2478 plugin_message_response_timeout)) {
2479 ticker_.set_tick_interval(hung_plugin_detect_freq);
2480 ticker_.RegisterTickHandler(&hung_window_detector_);
2481 ticker_.Start();
2482
2483 pref_service->SetInteger(prefs::kPluginMessageResponseTimeout,
2484 plugin_message_response_timeout);
2485 pref_service->SetInteger(prefs::kHungPluginDetectFrequency,
2486 hung_plugin_detect_freq);
2487 }
2488 #endif
2489 }
2490
2491 void BrowserView::UpdateAcceleratorMetrics(const ui::Accelerator& accelerator, 2448 void BrowserView::UpdateAcceleratorMetrics(const ui::Accelerator& accelerator,
2492 int command_id) { 2449 int command_id) {
2493 const ui::KeyboardCode key_code = accelerator.key_code(); 2450 const ui::KeyboardCode key_code = accelerator.key_code();
2494 if (command_id == IDC_HELP_PAGE_VIA_KEYBOARD && key_code == ui::VKEY_F1) 2451 if (command_id == IDC_HELP_PAGE_VIA_KEYBOARD && key_code == ui::VKEY_F1)
2495 content::RecordAction(UserMetricsAction("ShowHelpTabViaF1")); 2452 content::RecordAction(UserMetricsAction("ShowHelpTabViaF1"));
2496 2453
2497 if (command_id == IDC_BOOKMARK_PAGE) 2454 if (command_id == IDC_BOOKMARK_PAGE)
2498 UMA_HISTOGRAM_ENUMERATION("Bookmarks.EntryPoint", 2455 UMA_HISTOGRAM_ENUMERATION("Bookmarks.EntryPoint",
2499 BOOKMARK_ENTRY_POINT_ACCELERATOR, 2456 BOOKMARK_ENTRY_POINT_ACCELERATOR,
2500 BOOKMARK_ENTRY_POINT_LIMIT); 2457 BOOKMARK_ENTRY_POINT_LIMIT);
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after
2702 } 2659 }
2703 2660
2704 extensions::ActiveTabPermissionGranter* 2661 extensions::ActiveTabPermissionGranter*
2705 BrowserView::GetActiveTabPermissionGranter() { 2662 BrowserView::GetActiveTabPermissionGranter() {
2706 content::WebContents* web_contents = GetActiveWebContents(); 2663 content::WebContents* web_contents = GetActiveWebContents();
2707 if (!web_contents) 2664 if (!web_contents)
2708 return nullptr; 2665 return nullptr;
2709 return extensions::TabHelper::FromWebContents(web_contents) 2666 return extensions::TabHelper::FromWebContents(web_contents)
2710 ->active_tab_permission_granter(); 2667 ->active_tab_permission_granter();
2711 } 2668 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/views/frame/browser_view.h ('k') | chrome/chrome_browser.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698