blob: 82a385090ec9decb4a7a1ce61330184f723d5df9 [file] [log] [blame]
// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/media/webrtc/same_origin_observer.h"
#include "content/public/browser/page.h"
#include "content/public/browser/web_contents.h"
SameOriginObserver::SameOriginObserver(
content::WebContents* observed_contents,
const url::Origin& reference_origin,
base::RepeatingCallback<void(content::WebContents*)>
on_same_origin_state_changed)
: content::WebContentsObserver(observed_contents),
reference_origin_(reference_origin),
on_same_origin_state_changed_(on_same_origin_state_changed) {
DCHECK(observed_contents);
is_same_origin_ = reference_origin_.IsSameOriginWith(
observed_contents->GetPrimaryMainFrame()->GetLastCommittedOrigin());
}
SameOriginObserver::~SameOriginObserver() = default;
void SameOriginObserver::PrimaryPageChanged(content::Page& page) {
bool is_now_same_origin = reference_origin_.IsSameOriginWith(
page.GetMainDocument().GetLastCommittedOrigin());
if (is_same_origin_ != is_now_same_origin) {
is_same_origin_ = is_now_same_origin;
on_same_origin_state_changed_.Run(web_contents());
}
}