blob: 71d06cc40bb6ab4957524fb8a64dcc8f7f79828f [file] [log] [blame]
// Copyright 2017 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 IOS_WEB_PUBLIC_GLOBAL_STATE_IOS_GLOBAL_STATE_H_
#define IOS_WEB_PUBLIC_GLOBAL_STATE_IOS_GLOBAL_STATE_H_
#include "base/task/task_scheduler/task_scheduler.h"
namespace base {
class MessageLoop;
}
namespace ios_global_state {
// Contains parameters passed to |Create|.
struct CreateParams {
CreateParams() : install_at_exit_manager(false), argc(0), argv(nullptr) {}
bool install_at_exit_manager;
int argc;
const char** argv;
};
// Creates global state for iOS. This should be called as early as possible in
// the application lifecycle. It is safe to call this method more than once, the
// initialization will only be performed once.
//
// An AtExitManager will only be created if |register_exit_manager| is true. If
// |register_exit_manager| is false, an AtExitManager must already exist before
// calling |Create|.
// |argc| and |argv| may be set to the command line options which were passed to
// the application.
//
// Since the initialization will only be performed the first time this method is
// called, the values of all the parameters will be ignored after the first
// call.
void Create(const CreateParams& create_params);
// Creates a message loop for the UI thread and attaches it. It is safe to call
// this method more than once, the initialization will only be performed once.
void BuildMessageLoop();
// Destroys the message loop create by BuildMessageLoop. It is safe to call
// multiple time.
void DestroyMessageLoop();
// Creates a network change notifier. It is safe to call this method more than
// once, the initialization will only be performed once.
void CreateNetworkChangeNotifier();
// Destroys the network change notifier created by CreateNetworkChangeNotifier.
// It is safe to call this method multiple time.
void DestroyNetworkChangeNotifier();
// Starts a global base::TaskScheduler. This method must be called to start
// the Task Scheduler that is created in |Create|. If |init_params| is null,
// default InitParams will be used. It is safe to call this method more than
// once, the task scheduler will only be started once.
void StartTaskScheduler(base::TaskScheduler::InitParams* init_params);
// Destroys the AtExitManager if one was created in |Create|. It is safe to call
// this method even if |install_at_exit_manager| was false in the CreateParams
// passed to |Create|. It is safe to call this method more than once, the
// AtExitManager will be destroyed on the first call.
void DestroyAtExitManager();
// Returns message loop for the UI thread.
base::MessageLoop* GetMainThreadMessageLoop();
} // namespace ios_global_state
#endif // IOS_WEB_PUBLIC_GLOBAL_STATE_IOS_GLOBAL_STATE_H_