chromium/chromecast/renderer/feature_manager_on_associated_interface.cc

// 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 "chromecast/renderer/feature_manager_on_associated_interface.h"

#include "base/check.h"
#include "base/logging.h"
#include "base/values.h"
#include "chromecast/base/cast_features.h"
#include "chromecast/common/feature_constants.h"
#include "chromecast/renderer/cast_content_settings_client.h"
#include "content/public/renderer/render_frame.h"

namespace chromecast {
FeatureManagerOnAssociatedInterface::FeatureManagerOnAssociatedInterface(
    content::RenderFrame* render_frame)
    : FeatureManager(render_frame) {}

FeatureManagerOnAssociatedInterface::~FeatureManagerOnAssociatedInterface() {}

void FeatureManagerOnAssociatedInterface::ConfigureFeaturesInternal() {
  FeatureManager::ConfigureFeaturesInternal();

  if (FeatureEnabled(feature::kEnableTrackControlAppRendererFeatureUse)) {
    std::string app_id("MissingAppId");
    auto& feature =
        GetFeature(feature::kEnableTrackControlAppRendererFeatureUse);
    const std::string* app_id_received =
        feature->config.FindString(feature::kKeyAppId);
    if (app_id_received) {
      app_id = *app_id_received;
    } else {
      LOG(ERROR) << __func__ << " failed to receive valid app_id";
    }
    bool allow_insecure_content = true;
    // Lifetime is tied to |render_frame| via content::RenderFrameObserver.
    new CastContentSettingsClient(render_frame(), app_id,
                                  allow_insecure_content);
  }
}

}  // namespace chromecast