blob: 11e95e462fae8b1b34094e61534e74a75dca3b27 [file] [log] [blame]
// Copyright 2019 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_WEB_APPLICATIONS_TEST_TEST_FILE_HANDLER_MANAGER_H_
#define CHROME_BROWSER_WEB_APPLICATIONS_TEST_TEST_FILE_HANDLER_MANAGER_H_
#include <map>
#include <string>
#include <vector>
#include "base/containers/flat_set.h"
#include "chrome/browser/web_applications/components/file_handler_manager.h"
#include "chrome/browser/web_applications/components/web_app_id.h"
#include "url/gurl.h"
class Profile;
namespace web_app {
// A testing implementation of a file handler manager.
class TestFileHandlerManager : public FileHandlerManager {
public:
explicit TestFileHandlerManager(Profile* profile);
TestFileHandlerManager(const TestFileHandlerManager&) = delete;
TestFileHandlerManager& operator=(const TestFileHandlerManager&) = delete;
~TestFileHandlerManager() override;
const apps::FileHandlers* GetAllFileHandlers(const AppId& app_id) override;
using AcceptMap = std::map<std::string, base::flat_set<std::string>>;
// Installs a file handler for |app_id| with the action url |handler|,
// accepting all mimetypes and extensions in |accepts|.
// Note: If an item in accepts starts with a '.' it is considered an
// extension, otherwise it is a mime.
// Note: |enable| indicates whether file handlers for |app_id| should be
// enabled, not whether this specific file handler should be enabled. If any
// file handler is enabled, all of them will be.
void InstallFileHandler(const AppId& app_id,
const GURL& handler,
const AcceptMap& accept,
bool enable = true);
private:
std::map<AppId, apps::FileHandlers> file_handlers_;
};
} // namespace web_app
#endif // CHROME_BROWSER_WEB_APPLICATIONS_TEST_TEST_FILE_HANDLER_MANAGER_H_