blob: 49a50b659d5713118ecadc1b0448135fb92bc6c3 [file] [log] [blame]
// Copyright 2017 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.
#ifndef CHROME_BROWSER_UI_WEBUI_INTERVENTIONS_INTERNALS_INTERVENTIONS_INTERNALS_PAGE_HANDLER_H_
#define CHROME_BROWSER_UI_WEBUI_INTERVENTIONS_INTERNALS_INTERVENTIONS_INTERNALS_PAGE_HANDLER_H_
#include <string>
#include "base/macros.h"
#include "base/time/time.h"
#include "chrome/browser/ui/webui/interventions_internals/interventions_internals.mojom.h"
#include "components/previews/content/previews_ui_service.h"
#include "components/previews/core/previews_logger.h"
#include "components/previews/core/previews_logger_observer.h"
#include "mojo/public/cpp/bindings/binding.h"
#include "net/nqe/effective_connection_type.h"
#include "services/network/public/cpp/network_quality_tracker.h"
class InterventionsInternalsPageHandler
: public previews::PreviewsLoggerObserver,
public network::NetworkQualityTracker::EffectiveConnectionTypeObserver,
public mojom::InterventionsInternalsPageHandler {
public:
InterventionsInternalsPageHandler(
mojom::InterventionsInternalsPageHandlerRequest request,
previews::PreviewsUIService* previews_ui_service);
~InterventionsInternalsPageHandler() override;
// mojom::InterventionsInternalsPageHandler:
void GetPreviewsEnabled(GetPreviewsEnabledCallback callback) override;
void GetPreviewsFlagsDetails(
GetPreviewsFlagsDetailsCallback callback) override;
void SetClientPage(mojom::InterventionsInternalsPagePtr page) override;
void SetIgnorePreviewsBlacklistDecision(bool ignore) override;
// previews::PreviewsLoggerObserver:
void OnNewMessageLogAdded(
const previews::PreviewsLogger::MessageLog& message) override;
void OnNewBlacklistedHost(const std::string& host, base::Time time) override;
void OnUserBlacklistedStatusChange(bool blacklisted) override;
void OnBlacklistCleared(base::Time time) override;
void OnIgnoreBlacklistDecisionStatusChanged(bool ignored) override;
void OnLastObserverRemove() override;
private:
// network::NetworkQualityTracker::EffectiveConnectionTypeObserver:
void OnEffectiveConnectionTypeChanged(
net::EffectiveConnectionType type) override;
mojo::Binding<mojom::InterventionsInternalsPageHandler> binding_;
// The PreviewsLogger that this handler is listening to, and guaranteed to
// outlive |this|.
previews::PreviewsLogger* logger_;
// A pointer to the PreviewsUIService associated with this handler, and
// guaranteed to outlive |this|.
previews::PreviewsUIService* previews_ui_service_;
// The current estimated effective connection type.
net::EffectiveConnectionType current_estimated_ect_;
// Handle back to the page by which we can pass in new log messages.
mojom::InterventionsInternalsPagePtr page_;
DISALLOW_COPY_AND_ASSIGN(InterventionsInternalsPageHandler);
};
#endif // CHROME_BROWSER_UI_WEBUI_INTERVENTIONS_INTERNALS_INTERVENTIONS_INTERNALS_PAGE_HANDLER_H_