// Copyright 2014 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 EXTENSIONS_BROWSER_PATH_UTIL_H_
#define EXTENSIONS_BROWSER_PATH_UTIL_H_

#include "base/callback_forward.h"
#include "base/files/file_path.h"

namespace extensions {
namespace path_util {

// Prettifies |source_path|, by replacing the user's home directory with "~"
// (if applicable).
// For OS X, prettifies |source_path| by localizing every component of the
// path. Additionally, if the path is inside the user's home directory, then
// replace the home directory component with "~".
base::FilePath PrettifyPath(const base::FilePath& source_path);

// Calculates the size of the directory containing an extension, and formats it
// to a localized string that can be placed directly in the UI. |message_id| is
// the ID of the string to use when the size is less than 1 MB, basically
// IDS_APPLICATION_INFO_SIZE_SMALL_LABEL.
void CalculateAndFormatExtensionDirectorySize(
    const base::FilePath& extension_path,
    int message_id,
    base::OnceCallback<void(const std::u16string&)> callback);

// Returns a new FilePath with the '~' resolved to the home directory, if
// appropriate. Otherwise, returns the original path.
base::FilePath ResolveHomeDirectory(const base::FilePath& path);

}  // namespace path_util
}  // namespace extensions

#endif  // EXTENSIONS_BROWSER_PATH_UTIL_H_
