1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
|
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "content/browser/renderer_host/browsing_context_group_swap.h"
#include "base/memory/ptr_util.h"
#include "base/notreached.h"
namespace content {
BrowsingContextGroupSwap BrowsingContextGroupSwap::CreateDefault() {
return {BrowsingContextGroupSwapType::kNoSwap, std::nullopt};
}
BrowsingContextGroupSwap BrowsingContextGroupSwap::CreateNoSwap(
ShouldSwapBrowsingInstance no_swap_reason) {
return {BrowsingContextGroupSwapType::kNoSwap, no_swap_reason};
}
BrowsingContextGroupSwap BrowsingContextGroupSwap::CreateCoopSwap() {
return {BrowsingContextGroupSwapType::kCoopSwap,
ShouldSwapBrowsingInstance::kYes_ForceSwap};
}
BrowsingContextGroupSwap BrowsingContextGroupSwap::CreateSecuritySwap() {
return {BrowsingContextGroupSwapType::kSecuritySwap,
ShouldSwapBrowsingInstance::kYes_ForceSwap};
}
BrowsingContextGroupSwap BrowsingContextGroupSwap::CreateProactiveSwap(
ShouldSwapBrowsingInstance should_swap_reason) {
return {BrowsingContextGroupSwapType::kProactiveSwap, should_swap_reason};
}
bool BrowsingContextGroupSwap::ShouldSwap() const {
switch (type_) {
case BrowsingContextGroupSwapType::kNoSwap:
return false;
case BrowsingContextGroupSwapType::kCoopSwap:
case BrowsingContextGroupSwapType::kSecuritySwap:
case BrowsingContextGroupSwapType::kProactiveSwap:
return true;
}
NOTREACHED();
}
bool BrowsingContextGroupSwap::ShouldClearProxiesOnCommit() const {
switch (type_) {
case BrowsingContextGroupSwapType::kNoSwap:
case BrowsingContextGroupSwapType::kSecuritySwap:
case BrowsingContextGroupSwapType::kProactiveSwap:
return false;
case BrowsingContextGroupSwapType::kCoopSwap:
return true;
}
NOTREACHED();
}
bool BrowsingContextGroupSwap::ShouldClearWindowName() const {
switch (type_) {
case BrowsingContextGroupSwapType::kNoSwap:
case BrowsingContextGroupSwapType::kSecuritySwap:
case BrowsingContextGroupSwapType::kProactiveSwap:
return false;
case BrowsingContextGroupSwapType::kCoopSwap:
return true;
}
NOTREACHED();
}
BrowsingContextGroupSwap::BrowsingContextGroupSwap(
BrowsingContextGroupSwapType type,
const std::optional<ShouldSwapBrowsingInstance>& reason)
: type_(type), reason_(reason) {}
} // namespace content
|