blob: 38a38a222189fa4e2c6a216e5b3329137441cfc6 [file] [log] [blame]
// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/page_load_metrics/browser_page_track_decider.h"
#include <string>
#include "chrome/browser/page_load_metrics/page_load_metrics_embedder_interface.h"
#include "content/public/browser/navigation_handle.h"
#include "net/http/http_response_headers.h"
namespace page_load_metrics {
BrowserPageTrackDecider::BrowserPageTrackDecider(
PageLoadMetricsEmbedderInterface* embedder_interface,
content::NavigationHandle* navigation_handle)
: embedder_interface_(embedder_interface),
navigation_handle_(navigation_handle) {}
BrowserPageTrackDecider::~BrowserPageTrackDecider() {}
bool BrowserPageTrackDecider::HasCommitted() {
return navigation_handle_->HasCommitted();
}
bool BrowserPageTrackDecider::IsHttpOrHttpsUrl() {
return navigation_handle_->GetURL().SchemeIsHTTPOrHTTPS();
}
bool BrowserPageTrackDecider::IsNewTabPageUrl() {
return embedder_interface_->IsNewTabPageUrl(navigation_handle_->GetURL());
}
bool BrowserPageTrackDecider::IsChromeErrorPage() {
DCHECK(HasCommitted());
return navigation_handle_->IsErrorPage();
}
int BrowserPageTrackDecider::GetHttpStatusCode() {
DCHECK(HasCommitted());
const net::HttpResponseHeaders* response_headers =
navigation_handle_->GetResponseHeaders();
if (!response_headers)
return -1;
return response_headers->response_code();
}
} // namespace page_load_metrics