910e62b5创建于 1月15日历史提交
// Copyright 2023 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/extensions/file_handlers/file_handling_launch_utils.h"

#include "chrome/browser/extensions/tab_helper.h"
#include "chrome/browser/web_applications/web_app_tab_helper.h"
#include "components/webapps/browser/launch_queue/launch_queue.h"
#include "content/public/browser/web_contents.h"
#include "extensions/common/extension.h"
#include "extensions/common/manifest_handlers/web_file_handlers_info.h"

namespace extensions {

void EnqueueLaunchParamsInWebContents(content::WebContents* web_contents,
                                      const Extension& extension,
                                      const GURL& url,
                                      std::vector<base::FilePath> paths) {
  CHECK(extensions::WebFileHandlers::SupportsWebFileHandlers(extension));

  // Enable LaunchQueue in Web file handlers.
  webapps::LaunchParams launch_params;
  launch_params.started_new_navigation = true;
  launch_params.app_id = extension.id();
  launch_params.target_url = url;
  launch_params.paths = paths;
  auto* helper = web_app::WebAppTabHelper::FromWebContents(web_contents);
  if (helper) {
    helper->EnsureLaunchQueue().Enqueue(launch_params);
  }
}

}  // namespace extensions