diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2018-08-24 12:15:48 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2018-08-28 13:30:04 +0000 |
commit | b014812705fc80bff0a5c120dfcef88f349816dc (patch) | |
tree | 25a2e2d9fa285f1add86aa333389a839f81a39ae /chromium/chrome/browser/ui/webui/discards/discards_ui.cc | |
parent | 9f4560b1027ae06fdb497023cdcaf91b8511fa74 (diff) | |
download | qtwebengine-chromium-b014812705fc80bff0a5c120dfcef88f349816dc.tar.gz |
BASELINE: Update Chromium to 68.0.3440.125
Change-Id: I23f19369e01f688e496f5bf179abb521ad73874f
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/chrome/browser/ui/webui/discards/discards_ui.cc')
-rw-r--r-- | chromium/chrome/browser/ui/webui/discards/discards_ui.cc | 57 |
1 files changed, 39 insertions, 18 deletions
diff --git a/chromium/chrome/browser/ui/webui/discards/discards_ui.cc b/chromium/chrome/browser/ui/webui/discards/discards_ui.cc index bcf0a16b0c2..c61409079e2 100644 --- a/chromium/chrome/browser/ui/webui/discards/discards_ui.cc +++ b/chromium/chrome/browser/ui/webui/discards/discards_ui.cc @@ -14,6 +14,7 @@ #include "chrome/browser/profiles/profile.h" #include "chrome/browser/resource_coordinator/discard_reason.h" #include "chrome/browser/resource_coordinator/lifecycle_unit.h" +#include "chrome/browser/resource_coordinator/tab_activity_watcher.h" #include "chrome/browser/resource_coordinator/tab_lifecycle_unit_external.h" #include "chrome/browser/resource_coordinator/tab_manager.h" #include "chrome/browser/resource_coordinator/time.h" @@ -50,6 +51,15 @@ mojom::LifecycleUnitVisibility GetLifecycleUnitVisibility( #endif } +resource_coordinator::LifecycleUnit* GetLifecycleUnitById(int32_t id) { + for (resource_coordinator::LifecycleUnit* lifecycle_unit : + g_browser_process->GetTabManager()->GetSortedLifecycleUnits()) { + if (lifecycle_unit->GetID() == id) + return lifecycle_unit; + } + return nullptr; +} + class DiscardsDetailsProviderImpl : public mojom::DiscardsDetailsProvider { public: // This instance is deleted when the supplied pipe is destroyed. @@ -83,18 +93,16 @@ class DiscardsDetailsProviderImpl : public mojom::DiscardsDetailsProvider { tab_lifecycle_unit_external->GetWebContents(); info->tab_url = contents->GetLastCommittedURL().spec(); - // This can be empty for pages without a favicon. The WebUI takes care of - // showing the chrome://favicon default in that case. - info->favicon_url = lifecycle_unit->GetIconURL(); info->title = base::UTF16ToUTF8(lifecycle_unit->GetTitle()); info->visibility = GetLifecycleUnitVisibility(lifecycle_unit->GetVisibility()); info->is_media = tab_lifecycle_unit_external->IsMediaTab(); + info->is_frozen = tab_lifecycle_unit_external->IsFrozen(); info->is_discarded = tab_lifecycle_unit_external->IsDiscarded(); info->discard_count = tab_lifecycle_unit_external->GetDiscardCount(); info->utility_rank = rank++; const base::TimeTicks last_focused_time = - lifecycle_unit->GetSortKey().last_focused_time; + lifecycle_unit->GetLastFocusedTime(); const base::TimeDelta elapsed = (last_focused_time == base::TimeTicks::Max()) ? base::TimeDelta() @@ -103,6 +111,12 @@ class DiscardsDetailsProviderImpl : public mojom::DiscardsDetailsProvider { info->is_auto_discardable = tab_lifecycle_unit_external->IsAutoDiscardable(); info->id = lifecycle_unit->GetID(); + base::Optional<float> reactivation_score = + resource_coordinator::TabActivityWatcher::GetInstance() + ->CalculateReactivationScore(contents); + info->has_reactivation_score = reactivation_score.has_value(); + if (info->has_reactivation_score) + info->reactivation_score = reactivation_score.value(); infos.push_back(std::move(info)); } @@ -110,28 +124,32 @@ class DiscardsDetailsProviderImpl : public mojom::DiscardsDetailsProvider { std::move(callback).Run(std::move(infos)); } - void SetAutoDiscardable(int32_t tab_id, + void SetAutoDiscardable(int32_t id, bool is_auto_discardable, SetAutoDiscardableCallback callback) override { - resource_coordinator::TabManager* tab_manager = - g_browser_process->GetTabManager(); - tab_manager->SetTabAutoDiscardableState(tab_id, is_auto_discardable); + auto* lifecycle_unit = GetLifecycleUnitById(id); + if (lifecycle_unit) { + auto* tab_lifecycle_unit_external = + lifecycle_unit->AsTabLifecycleUnitExternal(); + if (tab_lifecycle_unit_external) + tab_lifecycle_unit_external->SetAutoDiscardable(is_auto_discardable); + } std::move(callback).Run(); } - void DiscardById(int32_t tab_id, + void DiscardById(int32_t id, bool urgent, DiscardByIdCallback callback) override { - resource_coordinator::TabManager* tab_manager = - g_browser_process->GetTabManager(); - tab_manager->DiscardTabById(tab_id, GetDiscardReason(urgent)); + auto* lifecycle_unit = GetLifecycleUnitById(id); + if (lifecycle_unit) + lifecycle_unit->Discard(GetDiscardReason(urgent)); std::move(callback).Run(); } - void FreezeById(int32_t tab_id) override { - resource_coordinator::TabManager* tab_manager = - g_browser_process->GetTabManager(); - tab_manager->FreezeTabById(tab_id); + void FreezeById(int32_t id) override { + auto* lifecycle_unit = GetLifecycleUnitById(id); + if (lifecycle_unit) + lifecycle_unit->Freeze(); } void Discard(bool urgent, DiscardCallback callback) override { @@ -150,7 +168,7 @@ class DiscardsDetailsProviderImpl : public mojom::DiscardsDetailsProvider { } // namespace DiscardsUI::DiscardsUI(content::WebUI* web_ui) - : ui::MojoWebUIController<mojom::DiscardsDetailsProvider>(web_ui) { + : ui::MojoWebUIController(web_ui) { std::unique_ptr<content::WebUIDataSource> source( content::WebUIDataSource::Create(chrome::kChromeUIDiscardsHost)); @@ -163,11 +181,14 @@ DiscardsUI::DiscardsUI(content::WebUI* web_ui) Profile* profile = Profile::FromWebUI(web_ui); content::WebUIDataSource::Add(profile, source.release()); + AddHandlerToRegistry(base::BindRepeating( + &DiscardsUI::BindDiscardsDetailsProvider, base::Unretained(this))); } DiscardsUI::~DiscardsUI() {} -void DiscardsUI::BindUIHandler(mojom::DiscardsDetailsProviderRequest request) { +void DiscardsUI::BindDiscardsDetailsProvider( + mojom::DiscardsDetailsProviderRequest request) { ui_handler_ = std::make_unique<DiscardsDetailsProviderImpl>(std::move(request)); } |