blob: 1f11cd8ca67b926147cd1438758d5025a0440a6a [file] [log] [blame]
// Copyright 2018 The Cobalt Authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#include "cobalt/browser/lifecycle_console_commands.h"
#include <string>
#include "base/bind.h"
#include "base/logging.h"
#include "starboard/system.h"
namespace cobalt {
namespace browser {
const char kPauseCommand[] = "pause";
const char kPauseCommandShortHelp[] = "Sends a request to pause Cobalt.";
const char kPauseCommandLongHelp[] =
"Sends a request to the platform to pause Cobalt, indicating that it is "
"not in focus and sending a blur event to the web application.";
const char kUnpauseCommand[] = "unpause";
const char kUnpauseCommandShortHelp[] = "Sends a request to unpause Cobalt.";
const char kUnpauseCommandLongHelp[] =
"Sends a request to the platform to unpause Cobalt, resulting in a focus "
"event being sent to the web application.";
const char kSuspendCommand[] = "suspend";
const char kSuspendCommandShortHelp[] = "Sends a request to suspend Cobalt.";
const char kSuspendCommandLongHelp[] =
"Sends a request to the platform to suspend Cobalt, indicating that it is "
"not visible and sending a hidden event to the web application. Note that "
"Cobalt may become unresponsive after this call and you will need to "
"resume it in a platform-specific way.";
const char kQuitCommand[] = "quit";
const char kQuitCommandShortHelp[] = "Sends a request to stop Cobalt.";
const char kQuitCommandLongHelp[] =
"Sends a request to the platform to stop Cobalt, shutting it down and "
"ending the process (peacefully).";
namespace {
#if SB_API_VERSION >= SB_ADD_CONCEALED_STATE_SUPPORT_VERSION || \
SB_HAS(CONCEALED_STATE)
// This is temporary that will be changed in later CLs, for mapping Starboard
// Concealed state support onto Cobalt without Concealed state support to be
// able to test the former.
void OnPause(const std::string& /*message*/) { SbSystemRequestBlur(); }
void OnUnpause(const std::string& /*message*/) { SbSystemRequestFocus(); }
void OnSuspend(const std::string& /*message*/) {
LOG(INFO) << "Concealing Cobalt through the console, but you will need to "
<< "reveal Cobalt using a platform-specific method.";
SbSystemRequestConceal();
}
#else
void OnPause(const std::string& message) { SbSystemRequestPause(); }
void OnUnpause(const std::string& message) { SbSystemRequestUnpause(); }
void OnSuspend(const std::string& message) {
LOG(INFO) << "Suspending Cobalt through the console, but you will need to "
<< "resume Cobalt using a platform-specific method.";
SbSystemRequestSuspend();
}
#endif // SB_API_VERSION >= SB_ADD_CONCEALED_STATE_SUPPORT_VERSION ||
// SB_HAS(CONCEALED_STATE)
void OnQuit(const std::string& /*message*/) { SbSystemRequestStop(0); }
} // namespace
LifecycleConsoleCommands::LifecycleConsoleCommands()
: pause_command_handler_(kPauseCommand, base::Bind(&OnPause),
kPauseCommandShortHelp, kPauseCommandLongHelp),
unpause_command_handler_(kUnpauseCommand, base::Bind(OnUnpause),
kUnpauseCommandShortHelp,
kUnpauseCommandLongHelp),
suspend_command_handler_(kSuspendCommand, base::Bind(OnSuspend),
kSuspendCommandShortHelp,
kSuspendCommandLongHelp),
quit_command_handler_(kQuitCommand, base::Bind(OnQuit),
kQuitCommandShortHelp, kQuitCommandLongHelp) {}
} // namespace browser
} // namespace cobalt