#include "content/public/common/content_switches.h"
#include "headless/public/headless_shell.h"
#include "headless/public/switches.h"
-
#if BUILDFLAG(IS_MAC)
#include "chrome/app/chrome_main_mac.h"
#include "chrome/app/notification_metrics.h"
#endif
+#if defined(SAMSUNG_NEXT_BROWSER)
+#include "chrome/browser/ui/samsung/samsung_browser_core.h"
+#endif
+
#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX)
#include "base/base_switches.h"
#endif
// return, see the --change-stack-guard-on-fork command line flag.
__attribute__((visibility("default"))) int NO_STACK_PROTECTOR
ChromeMain(int argc, const char** argv);
+#if defined(SAMSUNG_NEXT_BROWSER)
+__attribute__((visibility("default"))) void ChromeAppCreate();
+__attribute__((visibility("default"))) void ChromeAppControl(
+ const std::map<std::string, std::string>& keyValuePairs);
+__attribute__((visibility("default"))) void ChromeAppResume();
+__attribute__((visibility("default"))) void ChromeAppPause();
+__attribute__((visibility("default"))) void ChromeAppTerminate();
+#endif
}
#else
#error Unknown platform.
return content::RESULT_CODE_NORMAL_EXIT;
return rv;
}
+
+#if defined(SAMSUNG_NEXT_BROWSER)
+void ChromeAppCreate() {
+ LOG(INFO) << "ChromeAppCreate";
+}
+
+void ChromeAppControl(const std::map<std::string, std::string>& keyValuePairs) {
+ LOG(INFO) << "ChromeAppControl";
+ auto iter = keyValuePairs.find("show_preloaded_browser");
+ if (iter != keyValuePairs.end()) {
+ if (iter->second == "true") {
+ LOG(INFO) << "Show Preloaded browser";
+ samsung_browser_main::SamsungBrowserCore::instance()->SetCanShowWindow(
+ true);
+ samsung_browser_main::SamsungBrowserCore::instance()
+ ->GetBrowserInstance()
+ ->window()
+ ->Show();
+ }
+ if (iter->second == "false") {
+ LOG(INFO) << "Hide Preloaded browser";
+ samsung_browser_main::SamsungBrowserCore::instance()->SetCanShowWindow(
+ false);
+ }
+ }
+
+ LOG(INFO) << "ChromeAppControl end";
+}
+
+void ChromeAppResume() {
+ LOG(INFO) << "ChromeAppResume";
+}
+
+void ChromeAppPause() {
+ LOG(INFO) << "ChromeAppPause";
+}
+
+void ChromeAppTerminate() {
+ LOG(INFO) << "ChromeAppTerminate";
+}
+#endif
#include "chrome/browser/ui/views/frame/webui_tab_strip_container_view.h"
#endif // BUILDFLAG(ENABLE_WEBUI_TAB_STRIP)
+#if defined(SAMSUNG_NEXT_BROWSER)
+#include "chrome/browser/ui/samsung/samsung_browser_core.h"
+#endif
+
using base::UserMetricsAction;
using content::NativeWebKeyboardEvent;
using content::WebContents;
// BrowserView, BrowserWindow implementation:
void BrowserView::Show() {
+#if defined(SAMSUNG_NEXT_BROWSER)
+ // For preloaded browser the window show have to be prevented till browser
+ // is put to foreground
+ if (!samsung_browser_main::SamsungBrowserCore::instance()->CanShowWindow())
+ return;
+#endif
#if !BUILDFLAG(IS_WIN) && !BUILDFLAG(IS_CHROMEOS_ASH)
// The Browser associated with this browser window must become the active
// browser at the time |Show()| is called. This is the natural behavior under
restore_focus_on_activation_ = true;
frame_->Show();
-
+ LOG(INFO) << "";
browser()->OnWindowDidShow();
// The fullscreen transition clears out focus, but there are some cases (for
#include <appfw/app.h>
#include <cstring>
+#include <map>
#include <string>
#include <vector>
struct serviceChecker {
std::string requestURI;
std::string chromiumArguments;
+ bool preLoading;
explicit serviceChecker(app_control_h service)
- : requestURI(""), chromiumArguments("") {
+ : requestURI(""), chromiumArguments(""), preLoading(false) {
AppControl app_control(service);
std::string data;
chromiumArguments = std::move(data);
LOG(INFO) << chromiumArguments;
}
+
+ data = app_control.getExtraData("Preloading");
+ if (!data.empty() && strcmp(data.c_str(), "true") == 0) {
+ preLoading = true;
+ }
}
};
static bool browser_create(void* user_data) {
LOG(INFO) << "browser_create";
+ /*
+ typedef void (*func_app_create)();
+ func_app_create chromeAppCreatePtr =
+ reinterpret_cast<func_app_create>(ewk_dlsym("ChromeAppCreate"));
+ if (chromeAppCreatePtr) {
+ chromeAppCreatePtr();
+ }
+ */
return 1;
}
static void browser_control(app_control_h app_control, void* user_data) {
LOG(INFO) << "browser_control call";
+
static bool browser_received_control = false;
+ static bool browser_window_shown = false;
+
+ typedef void (*func_app_control)(
+ const std::map<std::string, std::string>& keyValuePairs);
+
+ static func_app_control chromeAppControlPtr = nullptr;
+ if (chromeAppControlPtr == nullptr) {
+ chromeAppControlPtr =
+ reinterpret_cast<func_app_control>(ewk_dlsym("ChromeAppControl"));
+ if (!chromeAppControlPtr) {
+ LOG(ERROR) << "Failed to load ChromeAppControl";
+ }
+ }
+
+ serviceChecker checker(app_control);
+
if (browser_received_control) {
- LOG(INFO) << "browser control already received";
+ LOG(INFO) << "Browser control already received";
+ if (!browser_window_shown) {
+ LOG(INFO) << "Showing Preloaded browser";
+ browser_window_shown = true;
+ std::map<std::string, std::string> keyValuePairs = {
+ {"show_preloaded_browser", "true"}};
+ chromeAppControlPtr(keyValuePairs);
+ }
return;
}
+
browser_received_control = true;
+ if (checker.preLoading) {
+ std::map<std::string, std::string> keyValuePairs = {
+ {"show_preloaded_browser", "false"}};
+ chromeAppControlPtr(keyValuePairs);
+ } else
+ browser_window_shown = true;
std::vector<std::string> argumentsList;
getDefaultArguments(argumentsList);
- serviceChecker checker(app_control);
if (!checker.chromiumArguments.empty()) {
parseChromiumArguments(checker.chromiumArguments, argumentsList);
}
static void browser_pause(void* user_data) {
LOG(INFO) << "browser_pause call";
+ /*
+ typedef void (*func_app_pause)();
+ func_app_pause chromeAppPausePtr =
+ reinterpret_cast<func_app_pause>(ewk_dlsym("ChromeAppPause"));
+ if (chromeAppPausePtr) {
+ chromeAppPausePtr();
+ }
+ */
}
static void browser_resume(void* user_data) {
LOG(INFO) << "browser_resume call";
+ /*
+ typedef void (*func_app_resume)();
+ func_app_resume chromeAppResumePtr =
+ reinterpret_cast<func_app_resume>(ewk_dlsym("ChromeAppResume"));
+ if (chromeAppResumePtr) {
+ chromeAppResumePtr();
+ }
+ */
}
static void browser_terminate(void* user_data) {
LOG(INFO) << "browser_terminate call";
+ /*
+ typedef void (*func_app_terminate)();
+ func_app_terminate chromeAppTerminatePtr =
+ reinterpret_cast<func_app_terminate>(ewk_dlsym("ChromeAppTerminate"));
+ if (chromeAppTerminatePtr) {
+ chromeAppTerminatePtr();
+ }
+ */
}
int BrowserMain(int argc, const char** argv) {
LOG(INFO) << "BROWSER-APP-INTERFACE : BrowserMain called..";
}
}
-} // namespace samsung_next_browser
\ No newline at end of file
+} // namespace samsung_next_browser