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

Side by Side Diff: extensions/browser/process_manager.cc

Issue 2036863002: Remove use of deprecated MessageLoop methods in extensions. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 6 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
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "extensions/browser/process_manager.h" 5 #include "extensions/browser/process_manager.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/location.h"
10 #include "base/logging.h" 11 #include "base/logging.h"
11 #include "base/macros.h" 12 #include "base/macros.h"
12 #include "base/message_loop/message_loop.h" 13 #include "base/message_loop/message_loop.h"
13 #include "base/metrics/histogram_macros.h" 14 #include "base/metrics/histogram_macros.h"
15 #include "base/single_thread_task_runner.h"
14 #include "base/stl_util.h" 16 #include "base/stl_util.h"
17 #include "base/threading/thread_task_runner_handle.h"
15 #include "base/time/time.h" 18 #include "base/time/time.h"
16 #include "content/public/browser/browser_context.h" 19 #include "content/public/browser/browser_context.h"
17 #include "content/public/browser/devtools_agent_host.h" 20 #include "content/public/browser/devtools_agent_host.h"
18 #include "content/public/browser/notification_service.h" 21 #include "content/public/browser/notification_service.h"
19 #include "content/public/browser/render_frame_host.h" 22 #include "content/public/browser/render_frame_host.h"
20 #include "content/public/browser/render_process_host.h" 23 #include "content/public/browser/render_process_host.h"
21 #include "content/public/browser/render_view_host.h" 24 #include "content/public/browser/render_view_host.h"
22 #include "content/public/browser/site_instance.h" 25 #include "content/public/browser/site_instance.h"
23 #include "content/public/browser/web_contents.h" 26 #include "content/public/browser/web_contents.h"
24 #include "content/public/common/url_constants.h" 27 #include "content/public/common/url_constants.h"
(...skipping 523 matching lines...) Expand 10 before | Expand all | Expand 10 after
548 ExtensionHost* host = GetBackgroundHostForExtension(extension_id); 551 ExtensionHost* host = GetBackgroundHostForExtension(extension_id);
549 if (host && 552 if (host &&
550 sequence_id == background_page_data_[extension_id].close_sequence_id) { 553 sequence_id == background_page_data_[extension_id].close_sequence_id) {
551 host->render_process_host()->Send(new ExtensionMsg_Suspend(extension_id)); 554 host->render_process_host()->Send(new ExtensionMsg_Suspend(extension_id));
552 } 555 }
553 } 556 }
554 557
555 void ProcessManager::OnSuspendAck(const std::string& extension_id) { 558 void ProcessManager::OnSuspendAck(const std::string& extension_id) {
556 background_page_data_[extension_id].is_closing = true; 559 background_page_data_[extension_id].is_closing = true;
557 uint64_t sequence_id = background_page_data_[extension_id].close_sequence_id; 560 uint64_t sequence_id = background_page_data_[extension_id].close_sequence_id;
558 base::MessageLoop::current()->PostDelayedTask( 561 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
559 FROM_HERE, 562 FROM_HERE,
560 base::Bind(&ProcessManager::CloseLazyBackgroundPageNow, 563 base::Bind(&ProcessManager::CloseLazyBackgroundPageNow,
561 weak_ptr_factory_.GetWeakPtr(), 564 weak_ptr_factory_.GetWeakPtr(), extension_id, sequence_id),
562 extension_id,
563 sequence_id),
564 base::TimeDelta::FromMilliseconds(g_event_page_suspending_time_msec)); 565 base::TimeDelta::FromMilliseconds(g_event_page_suspending_time_msec));
565 } 566 }
566 567
567 void ProcessManager::OnNetworkRequestStarted( 568 void ProcessManager::OnNetworkRequestStarted(
568 content::RenderFrameHost* render_frame_host, 569 content::RenderFrameHost* render_frame_host,
569 uint64_t request_id) { 570 uint64_t request_id) {
570 ExtensionHost* host = GetBackgroundHostForExtension( 571 ExtensionHost* host = GetBackgroundHostForExtension(
571 GetExtensionID(render_frame_host)); 572 GetExtensionID(render_frame_host));
572 if (!host || !IsFrameInExtensionHost(host, render_frame_host)) 573 if (!host || !IsFrameInExtensionHost(host, render_frame_host))
573 return; 574 return;
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after
780 DCHECK(count > 0 || 781 DCHECK(count > 0 ||
781 !extension_registry_->enabled_extensions().Contains(extension_id)); 782 !extension_registry_->enabled_extensions().Contains(extension_id));
782 783
783 // If we reach a zero keepalive count when the lazy background page is about 784 // If we reach a zero keepalive count when the lazy background page is about
784 // to be closed, incrementing close_sequence_id will cancel the close 785 // to be closed, incrementing close_sequence_id will cancel the close
785 // sequence and cause the background page to linger. So check is_closing 786 // sequence and cause the background page to linger. So check is_closing
786 // before initiating another close sequence. 787 // before initiating another close sequence.
787 if (--count == 0 && !background_page_data_[extension_id].is_closing) { 788 if (--count == 0 && !background_page_data_[extension_id].is_closing) {
788 background_page_data_[extension_id].close_sequence_id = 789 background_page_data_[extension_id].close_sequence_id =
789 ++last_background_close_sequence_id_; 790 ++last_background_close_sequence_id_;
790 base::MessageLoop::current()->PostDelayedTask( 791 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
791 FROM_HERE, 792 FROM_HERE, base::Bind(&ProcessManager::OnLazyBackgroundPageIdle,
792 base::Bind(&ProcessManager::OnLazyBackgroundPageIdle, 793 weak_ptr_factory_.GetWeakPtr(), extension_id,
793 weak_ptr_factory_.GetWeakPtr(), 794 last_background_close_sequence_id_),
794 extension_id,
795 last_background_close_sequence_id_),
796 base::TimeDelta::FromMilliseconds(g_event_page_idle_time_msec)); 795 base::TimeDelta::FromMilliseconds(g_event_page_idle_time_msec));
797 } 796 }
798 } 797 }
799 798
800 // DecrementLazyKeepaliveCount is called when no calls to KeepaliveImpulse 799 // DecrementLazyKeepaliveCount is called when no calls to KeepaliveImpulse
801 // have been made for at least g_event_page_idle_time_msec. In the best case an 800 // have been made for at least g_event_page_idle_time_msec. In the best case an
802 // impulse was made just before being cleared, and the decrement will occur 801 // impulse was made just before being cleared, and the decrement will occur
803 // g_event_page_idle_time_msec later, causing a 2 * g_event_page_idle_time_msec 802 // g_event_page_idle_time_msec later, causing a 2 * g_event_page_idle_time_msec
804 // total time for extension to be shut down based on impulses. Worst case is 803 // total time for extension to be shut down based on impulses. Worst case is
805 // an impulse just after a clear, adding one check cycle and resulting in 3x 804 // an impulse just after a clear, adding one check cycle and resulting in 3x
(...skipping 11 matching lines...) Expand all
817 } 816 }
818 } 817 }
819 818
820 i->second.previous_keepalive_impulse = i->second.keepalive_impulse; 819 i->second.previous_keepalive_impulse = i->second.keepalive_impulse;
821 i->second.keepalive_impulse = false; 820 i->second.keepalive_impulse = false;
822 } 821 }
823 822
824 // OnKeepaliveImpulseCheck() is always called in constructor, but in unit 823 // OnKeepaliveImpulseCheck() is always called in constructor, but in unit
825 // tests there will be no message loop. In that event don't schedule tasks. 824 // tests there will be no message loop. In that event don't schedule tasks.
826 if (base::MessageLoop::current()) { 825 if (base::MessageLoop::current()) {
827 base::MessageLoop::current()->PostDelayedTask( 826 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
828 FROM_HERE, 827 FROM_HERE, base::Bind(&ProcessManager::OnKeepaliveImpulseCheck,
829 base::Bind(&ProcessManager::OnKeepaliveImpulseCheck, 828 weak_ptr_factory_.GetWeakPtr()),
830 weak_ptr_factory_.GetWeakPtr()),
831 base::TimeDelta::FromMilliseconds(g_event_page_idle_time_msec)); 829 base::TimeDelta::FromMilliseconds(g_event_page_idle_time_msec));
832 } 830 }
833 } 831 }
834 832
835 void ProcessManager::OnLazyBackgroundPageIdle(const std::string& extension_id, 833 void ProcessManager::OnLazyBackgroundPageIdle(const std::string& extension_id,
836 uint64_t sequence_id) { 834 uint64_t sequence_id) {
837 ExtensionHost* host = GetBackgroundHostForExtension(extension_id); 835 ExtensionHost* host = GetBackgroundHostForExtension(extension_id);
838 if (host && !background_page_data_[extension_id].is_closing && 836 if (host && !background_page_data_[extension_id].is_closing &&
839 sequence_id == background_page_data_[extension_id].close_sequence_id) { 837 sequence_id == background_page_data_[extension_id].close_sequence_id) {
840 // Tell the renderer we are about to close. This is a simple ping that the 838 // Tell the renderer we are about to close. This is a simple ping that the
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
990 if (extension && !IncognitoInfo::IsSplitMode(extension)) { 988 if (extension && !IncognitoInfo::IsSplitMode(extension)) {
991 BrowserContext* original_context = 989 BrowserContext* original_context =
992 ExtensionsBrowserClient::Get()->GetOriginalContext(browser_context()); 990 ExtensionsBrowserClient::Get()->GetOriginalContext(browser_context());
993 return ProcessManager::Get(original_context)->GetSiteInstanceForURL(url); 991 return ProcessManager::Get(original_context)->GetSiteInstanceForURL(url);
994 } 992 }
995 993
996 return ProcessManager::GetSiteInstanceForURL(url); 994 return ProcessManager::GetSiteInstanceForURL(url);
997 } 995 }
998 996
999 } // namespace extensions 997 } // namespace extensions
OLDNEW
« no previous file with comments | « extensions/browser/load_monitoring_extension_host_queue.cc ('k') | extensions/browser/serial_extension_host_queue.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698