blob: fc1324c4f6da9035a746cc9b778802a2238d0dd9 [file] [log] [blame]
// Copyright (c) 2012 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_CHROMEOS_EXTENSIONS_DEFAULT_APP_ORDER_H_
#define CHROME_BROWSER_CHROMEOS_EXTENSIONS_DEFAULT_APP_ORDER_H_
#include <string>
#include <vector>
#include "base/basictypes.h"
#include "base/synchronization/waitable_event.h"
namespace chromeos {
namespace default_app_order {
// ExternalLoader checks FILE_DEFAULT_APP_ORDER and loads it if the file
// exists. Otherwise, it uses the default built-in order. The file loading runs
// asynchronously on start up except for the browser restart path, in which
// case, start up will wait for the file check to finish because user profile
// might need to access the ordinals data.
class ExternalLoader {
public:
// Constructs an ExternalLoader and starts file loading. |async| is true to
// load the file asynchronously on the blocking pool.
explicit ExternalLoader(bool async);
~ExternalLoader();
const std::vector<std::string>& GetAppIds();
private:
void Load();
// A vector of app id strings that defines the default order of apps.
std::vector<std::string> app_ids_;
base::WaitableEvent loaded_;
DISALLOW_COPY_AND_ASSIGN(ExternalLoader);
};
// Gets the ordered list of app ids.
void Get(std::vector<std::string>* app_ids);
} // namespace default_app_order
} // namespace chromeos
#endif // CHROME_BROWSER_CHROMEOS_EXTENSIONS_DEFAULT_APP_ORDER_H_