blob: ac200c843986dbaf4a4a115618330608661b8f14 [file] [log] [blame]
// Copyright 2025 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#import "ios/chrome/browser/snapshots/model/snapshot_source_tab_helper.h"
#import "base/memory/ptr_util.h"
#import "ios/web/public/web_state.h"
SnapshotSourceTabHelper::~SnapshotSourceTabHelper() = default;
SnapshotSourceTabHelper::SnapshotSourceTabHelper(web::WebState* web_state)
: web_state_(web_state) {
CHECK(web_state_);
web_state_observation_.Observe(web_state_);
}
bool SnapshotSourceTabHelper::CanTakeSnapshot() const {
web::WebState* source_web_state =
overriding_source_web_state_.get() ?: web_state_.get();
CHECK(source_web_state);
return source_web_state->CanTakeSnapshot();
}
void SnapshotSourceTabHelper::TakeSnapshot(const CGRect rect,
SnapshotCallback callback) {
web::WebState* source_web_state =
overriding_source_web_state_.get() ?: web_state_.get();
CHECK(source_web_state);
return source_web_state->TakeSnapshot(rect, callback);
}
UIView* SnapshotSourceTabHelper::GetView() {
web::WebState* source_web_state =
overriding_source_web_state_.get() ?: web_state_.get();
CHECK(source_web_state);
return source_web_state->GetView();
}
void SnapshotSourceTabHelper::SetOverridingSourceWebState(
web::WebState* overriding_source_web_state) {
overriding_source_web_state_.reset();
if (overriding_source_web_state) {
overriding_source_web_state_ = overriding_source_web_state->GetWeakPtr();
}
}
void SnapshotSourceTabHelper::WebStateDestroyed(web::WebState* web_state) {
web_state_observation_.Reset();
web_state_ = nullptr;
}