#include "base/strings/utf_string_conversions.h"
#include "build/build_config.h"
+#if BUILDFLAG(IS_TIZEN)
+#include <appfw/app_common.h>
+#include "base/memory/free_deleter.h"
+#endif
+
namespace base {
// This provider aims at overriding the initial behaviour for all platforms. It
return GetTempDir(result);
case DIR_HOME:
*result = GetHomeDir();
+#if BUILDFLAG(IS_TIZEN)
+ {
+ char* app_id = nullptr;
+ if (APP_ERROR_NONE == app_get_id(&app_id)) {
+ std::unique_ptr<char, FreeDeleter> data_path(app_get_data_path());
+ *result = base::FilePath(data_path.get());
+ free(app_id);
+ }
+ }
+#endif
return true;
case base::DIR_SRC_TEST_DATA_ROOT:
// This is only used by tests and overridden by each platform.
#include <stdlib.h>
#endif
+#if BUILDFLAG(IS_TIZEN)
+#include <appfw/app.h>
+#include "base/command_line.h"
+#include "base/memory/free_deleter.h"
+#endif
+
namespace base {
bool PathProviderPosix(int key, FilePath* result) {
case FILE_MODULE: { // TODO(evanm): is this correct?
#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
FilePath bin_dir;
+#if BUILDFLAG(IS_TIZEN)
+ bin_dir = base::CommandLine::ForCurrentProcess()->GetProgram();
+#else
if (!ReadSymbolicLink(FilePath(kProcSelfExe), &bin_dir)) {
NOTREACHED() << "Unable to resolve " << kProcSelfExe << ".";
}
+#endif
*result = bin_dir;
return true;
#elif BUILDFLAG(IS_FREEBSD)
std::unique_ptr<Environment> env(Environment::Create());
FilePath cache_dir(
nix::GetXDGDirectory(env.get(), "XDG_CACHE_HOME", ".cache"));
+#if BUILDFLAG(IS_TIZEN)
+ char* app_id = nullptr;
+ if (APP_ERROR_NONE == app_get_id(&app_id)) {
+ std::unique_ptr<char, FreeDeleter> cache_path(app_get_cache_path());
+ cache_dir = base::FilePath(cache_path.get());
+ free(app_id);
+ }
+#endif
*result = cache_dir;
return true;
}
import("//third_party/icu/config.gni")
}
+if (use_efl) {
+ import("//tizen_src/chromium_impl/chrome/chrome_efl.gni")
+}
+
# b/365489014: CrOS' chrome.sections_embedded target breaks on component builds;
# there's no clear value of supporting it there, so disable it.
_cros_generate_embed_section_target = is_chromeos_ash && !is_component_build
}
}
} else if (use_efl) {
- executable("chrome_tizen") {
- testonly = true
- deps = [ "//tizen_src/ewk/efl_integration:chromium-ewk" ]
- sources = [
- "app/chrome_exe_main_aura.cc",
- "app/chrome_exe_resource.h",
- ]
- ldflags = [
- "-pie",
- "-Wl,--export-dynamic",
- ]
- cflags = [ "-fPIC" ]
- if (is_tizen) {
- configs += [ "//tizen_src/build/config/tizen:executable_config" ]
- ldflags += [ "-Wl,-rpath=\$ORIGIN/../lib" ]
- }
- }
-
static_library("chrome_lib") {
sources = [ "app/chrome_exe_resource.h" ]
defines = []
"app/chrome_main_linux.cc",
"app/chrome_main_linux.h",
]
+ sources += external_chrome_app_efl_sources
deps += [
# On Linux, link the dependencies (libraries) that make up actual
--- /dev/null
+%package browser
+Summary: Tizen Chromium Browser Application
+Requires: %{name} = %{version}-%{release}
+%description browser
+Tizen Chromium Browser Application on Chromium EFL
+# org.tizen.chromium-efl-browser
+
+%define _browser_pkgid %{_pkgid}-browser
+%define _browser_rootdir %{TZ_SYS_RO_APP}/%{_browser_pkgid}
+%define _browser_buildpath "%{buildroot}"%{_browser_rootdir}
+
+# This variable is being accessed in the parent spec file, so we define it globally here.
+%global __browser_install_spec \
+ install -m 0644 "%{OUTPUT_FOLDER}"/tizen-manifest-browser.xml "%{buildroot}"%{_xmldir}/%{_browser_pkgid}.xml \
+ install -d "%{_browser_buildpath}" \
+ install -d "%{_browser_buildpath}"/bin \
+ install -d "%{_browser_buildpath}"/bin/locales \
+ install -m 0644 "%{OUTPUT_FOLDER}"/product_logo_48.png "%{_browser_buildpath}"/%{_browser_pkgid}.png \
+ install -m 0755 "%{OUTPUT_FOLDER}"/chrome_tizen "%{_browser_buildpath}"/bin \
+ install -m 0644 "%{OUTPUT_FOLDER}"/chrome_100_percent.pak "%{_browser_buildpath}"/bin \
+ install -m 0644 "%{OUTPUT_FOLDER}"/resources.pak "%{_browser_buildpath}"/bin \
+ install -m 0644 "%{OUTPUT_FOLDER}"/locales/en-US.pak "%{_browser_buildpath}"/bin/locales \
+ install -m 0644 "%{OUTPUT_FOLDER}"/snapshot_blob.bin "%{_browser_buildpath}"/bin \
+ install -m 0644 "%{OUTPUT_FOLDER}"/icudtl.dat "%{_browser_buildpath}"/bin \
+ %{nil}
+
+%files browser
+%manifest packaging/chromium-efl.manifest
+%{_xmldir}/%{_browser_pkgid}.xml
+%{_browser_rootdir}/%{_browser_pkgid}.png
+%{_browser_rootdir}/bin/chrome_tizen
+%{_browser_rootdir}/bin/chrome_100_percent.pak
+%{_browser_rootdir}/bin/resources.pak
+%{_browser_rootdir}/bin/locales/en-US.pak
+%{_browser_rootdir}/bin/snapshot_blob.bin
+%if "%{?__use_system_icu}" != "1"
+%{_browser_rootdir}/bin/icudtl.dat
+%endif
+
+%preun browser
+%pre browser
+
+%post browser
+echo Installation:
+echo tpk-backend -y %{_browser_pkgid} --preload
# locale resources
%{_engine_root_dir}/bin/locales/en-US.pak
%{_engine_root_dir}/res/locale/en_US
-%if %{__build_chrome} == 1
- %{_engine_root_dir}/bin/chrome_100_percent.pak
- #[TODO] chrome_crashpad_handler/chrome_tizen executable should be moved to tizen app path
- %{_engine_root_dir}/bin/chrome_crashpad_handler
- %{_engine_root_dir}/bin/chrome_tizen
- %{_engine_root_dir}/bin/resources.pak
-%endif
%if "%{?__use_system_icu}" != "1"
%{_engine_root_dir}/bin/icudtl.dat
%endif
Source0: %{name}-%{version}.tar.gz
Source1: content_shell.in
Source2: chromium-efl-engine.spec.in
+Source3: chromium-efl-browser.spec.in
%ifarch aarch64
%define _nodebug 1
%define include_sub_spec() %{expand:%(cat '%{1}')}
%{include_sub_spec %{SOURCE2}}
+%if 0%{?__build_chrome}
+%define include_sub_spec() %{expand:%(cat '%{1}')}
+%{include_sub_spec %{SOURCE3}}
+%endif
+
%prep
%setup -q
%build
+# The "_repository" flag was changed to "_vd_cfg_target_repository" in tizen 4.0 product tv.
+%if "%{?tizen_profile_name}" == "tv"
+#TO DO, onemain branch haven't defined _vd_cfg_target_repository, so add this hijack code
+# to set repo_name to "MuseM" if not define _vd_cfg_target_repository, need to delete this
+# code when defined _vd_cfg_target_repository in onemain.
+%if "%{?_vd_cfg_target_repository}"
+%define repo_name %{_vd_cfg_target_repository}
+%else
+%define repo_name MuseM
+%endif
+%else
+%define repo_name %{_repository}
+%endif
+
+%if %{__build_chrome} == 1
+%define OUTPUT_BASE_FOLDER out.chrome.tz_v%{tizen_version_major}.%{tizen_version_minor}.%{repo_name}.%{ARCHITECTURE}
+%else
+%define OUTPUT_BASE_FOLDER out.tz_v%{tizen_version_major}.%{tizen_version_minor}.%{repo_name}.%{ARCHITECTURE}
+%endif
+
+export GN_GENERATOR_OUTPUT=$PWD/%{OUTPUT_BASE_FOLDER}
+
+export BUILD_ARCH=%{ARCHITECTURE}
+
+#set build mode
+%global OUTPUT_FOLDER %{OUTPUT_BASE_FOLDER}
+
# architecture related configuration + neon temporary workaround
%if %{?_skip_ninja:0}%{!?_skip_ninja:1}
export PYTHONIOENCODING=utf-8
%endif
-# The "_repository" flag was changed to "_vd_cfg_target_repository" in tizen 4.0 product tv.
-%if "%{?tizen_profile_name}" == "tv"
-#TO DO, onemain branch haven't defined _vd_cfg_target_repository, so add this hijack code
-# to set repo_name to "MuseM" if not define _vd_cfg_target_repository, need to delete this
-# code when defined _vd_cfg_target_repository in onemain.
-%if "%{?_vd_cfg_target_repository}"
-%define repo_name %{_vd_cfg_target_repository}
-%else
-%define repo_name MuseM
-%endif
-%else
-%define repo_name %{_repository}
-%endif
-
-%if %{__build_chrome} == 1
-%define OUTPUT_BASE_FOLDER out.chrome.tz_v%{tizen_version_major}.%{tizen_version_minor}.%{repo_name}.%{ARCHITECTURE}
-%else
-%define OUTPUT_BASE_FOLDER out.tz_v%{tizen_version_major}.%{tizen_version_minor}.%{repo_name}.%{ARCHITECTURE}
-%endif
-
-export GN_GENERATOR_OUTPUT=$PWD/%{OUTPUT_BASE_FOLDER}
-
-export BUILD_ARCH=%{ARCHITECTURE}
-
-#set build mode
-%global OUTPUT_FOLDER %{OUTPUT_BASE_FOLDER}
-
if type ccache &> /dev/null; then
source tizen_src/build/ccache_env.sh tizen
fi
chromium-efl-install \
%endif
%if 0%{?__build_chrome}
- chrome_tizen \
+ chrome_exe_tizen \
%endif
efl_webprocess chromium-ewk efl_webview_app mini_browser ubrowser
> "%{OUTPUT_FOLDER}"/tizen-manifest-tpk.xml
%endif
+%if 0%{?__build_chrome}
+sed -e 's#@TIZEN_VERSION@#%{tizen_version_major}.%{tizen_version_minor}#g' \
+ -e 's#@CHROMIUM_VERSION@#%{version}#g' \
+ packaging/%{_pkgid}-browser.xml.in \
+ > "%{OUTPUT_FOLDER}"/tizen-manifest-browser.xml
+%endif
+
%if 0%{?__generate_tpk} && "%{?profile}" == "tv"
# add build_id to tizen-manifest
python3 %{TZ_SYS_BIN}/set_build_info.py "%{OUTPUT_FOLDER}"/tizen-manifest-tpk.xml %{COSMOS_BUILD_ID}
install -m 0644 third_party/electron_node/src/*.h "%{buildroot}"%{_includedir}/node/
%endif
-%if %{__build_chrome} == 1
- install -m 0755 "%{OUTPUT_FOLDER}"/chrome_tizen "%{buildroot}"%{CHROMIUM_LIB_DIR}/bin/chrome_tizen
- sed 's#@binary@#%{CHROMIUM_LIB_DIR}/bin/chrome_tizen#' %{SOURCE1} > "%{buildroot}"%{_bindir}/chrome_tizen
- install -m 0755 "%{OUTPUT_FOLDER}"/chrome_crashpad_handler "%{buildroot}"%{CHROMIUM_LIB_DIR}/bin/chrome_crashpad_handler
- sed 's#@binary@#%{CHROMIUM_LIB_DIR}/bin/chrome_crashpad_handler#' %{SOURCE1} > "%{buildroot}"%{_bindir}/chrome_crashpad_handler
- install -m 0644 "%{OUTPUT_FOLDER}"/locales/*.pak "%{buildroot}"%{CHROMIUM_LIB_DIR}/bin/locales
- install -m 0644 "%{OUTPUT_FOLDER}"/chrome_100_percent.pak "%{buildroot}"%{CHROMIUM_LIB_DIR}/bin/
- install -m 0644 "%{OUTPUT_FOLDER}"/resources.pak "%{buildroot}"%{CHROMIUM_LIB_DIR}/bin/
-%else
install -m 0644 "%{OUTPUT_FOLDER}"/locales/efl/*.pak "%{buildroot}"%{CHROMIUM_LIB_DIR}/bin/locales/
-%endif
install -m 0755 "%{OUTPUT_FOLDER}"/efl_webprocess "%{buildroot}"%{_bindir}/
%if "%{?profile}" == "tv"
find %{buildroot} -type f -name *.so | xargs strip --strip-all
%endif
+%if 0%{?__build_chrome}
+ %{__browser_install_spec}
+ # tizen_src/build/build_chromium_browser_tpk.sh %{_buildroot_next_browser} %{OUTPUT_FOLDER} %{_browser_tpk_file_name} %{__browser_tpk_id} %{?profile}
+%endif
+
%pre
if (( $(rpm -qa | grep 'wrtjs-[[:digit:]]' | wc -l) > 1 )); then
echo -e "\033[31m*****************************************************"
%{CHROMIUM_LIB_DIR}/bin/locales/*.pak
%{CHROMIUM_LIB_DIR}/res/locale/*
-%if %{__build_chrome} == 1
- %{CHROMIUM_LIB_DIR}/bin/chrome_100_percent.pak
- %{CHROMIUM_LIB_DIR}/bin/resources.pak
- %{CHROMIUM_LIB_DIR}/bin/chrome_tizen
- %{_bindir}/chrome_tizen
- %{CHROMIUM_LIB_DIR}/bin/chrome_crashpad_handler
- %{_bindir}/chrome_crashpad_handler
-%endif
%{_libdir}/libchromium-ewk.so
%{_libdir}/libewebkit2.so*
%if 0%{?__enable_squashfs_image}
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns="http://tizen.org/ns/packages" api-version="@TIZEN_VERSION@" package="org.tizen.chromium-efl-browser" version="@CHROMIUM_VERSION@">
+ <ui-application appid="org.tizen.chromium-efl-browser" exec="chrome_tizen" nodisplay="false" multiple="false" type="capp" taskmanage="true">
+ <label>Chromium</label>
+ <icon>org.tizen.chromium-efl-browser.png</icon>
+ <description>Chromium Browser for Tizen</description>
+ </ui-application>
+ <privileges>
+ <privilege>http://tizen.org/privilege/alarm.get</privilege>
+ <privilege>http://tizen.org/privilege/alarm.set</privilege>
+ <privilege>http://tizen.org/privilege/apphistory.read</privilege>
+ <privilege>http://tizen.org/privilege/appmanager.kill.bgapp</privilege>
+ <privilege>http://tizen.org/privilege/appmanager.launch</privilege>
+ <privilege>http://tizen.org/privilege/content.read</privilege>
+ <privilege>http://tizen.org/privilege/datacontrol.consumer</privilege>
+ <privilege>http://tizen.org/privilege/datasharing</privilege>
+ <privilege>http://tizen.org/privilege/externalstorage</privilege>
+ <privilege>http://tizen.org/privilege/internet</privilege>
+ <privilege>http://tizen.org/privilege/mediastorage</privilege>
+ <privilege>http://tizen.org/privilege/network.get</privilege>
+ <privilege>http://tizen.org/privilege/notification</privilege>
+ <privilege>http://tizen.org/privilege/package.info</privilege>
+ <privilege>http://tizen.org/privilege/packagemanager.admin</privilege>
+ <privilege>http://tizen.org/privilege/packagemanager.clearcache</privilege>
+ <privilege>http://tizen.org/privilege/packagemanager.info</privilege>
+ <privilege>http://tizen.org/privilege/telephony</privilege>
+ <privilege>http://tizen.org/privilege/telephony.admin</privilege>
+ </privileges>
+ <feature name="http://tizen.org/feature/screen.size.normal.1080.1920">true</feature>
+</manifest>
"//tizen_src/build:ecore",
"//tizen_src/build:libecore",
]
+
+if (is_tizen) {
+ external_base_configs += [
+ "//tizen_src/build:capi-appfw-application",
+ "//tizen_src/build:libcapi-appfw-application",
+ ]
+}
+
external_base_sources = [
"//tizen_src/chromium_impl/base/message_loop/message_pump_ecore.cc",
"//tizen_src/chromium_impl/base/message_loop/message_pump_ecore.h",
--- /dev/null
+# Copyright (c) 2025 samsung electronics. all rights reserved.
+# use of this source code is governed by a bsd-style license that can be
+# found in the license file.
+
+import("//tizen_src/build/config/tizen_features.gni")
+
+executable("chrome_exe_tizen") {
+ output_name = "chrome_tizen"
+ deps = [ "//tizen_src/ewk/efl_integration:libchromium-ewk" ]
+ if (is_tizen) {
+ sources = [ "app/chrome_exe_main_tizen.cc" ]
+ } else if (is_linux) {
+ sources = [ "//chrome/app/chrome_exe_main_aura.cc" ]
+ }
+ ldflags = [
+ "-pie",
+ "-Wl,--export-dynamic",
+ ]
+ cflags = [ "-fPIC" ]
+ if (is_tizen) {
+ configs += [ "//tizen_src/build/config/tizen:executable_config" ]
+ }
+}
--- /dev/null
+// Copyright 2025 Samsung Electronics. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "build/build_config.h"
+
+extern "C" {
+int ChromeMainTizen(int argc, const char** argv);
+}
+
+__attribute__((visibility("default"))) int main(int argc, const char** argv) {
+ return ChromeMainTizen(argc, argv);
+}
--- /dev/null
+// Copyright 2025 Samsung Electronics. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include <appfw/app.h>
+
+#include <string>
+#include <vector>
+
+#include "base/logging.h"
+#include "chrome/browser/ui/browser.h"
+#include "chrome/browser/ui/browser_list.h"
+#include "chrome/browser/ui/tabs/tab_strip_model.h"
+#include "content/browser/renderer_host/render_view_host_impl.h"
+#include "content/browser/renderer_host/render_widget_host_view_aura.h"
+
+extern "C" {
+int ChromeMain(int argc, const char** argv);
+
+__attribute__((visibility("default"))) int NO_STACK_PROTECTOR
+ChromeMainTizen(int argc, const char** argv);
+}
+
+namespace {
+
+content::WebContents* GetBrowserWebContent() {
+ Browser* browser = BrowserList::GetInstance()->GetLastActive();
+ if (browser == nullptr) {
+ LOG(INFO) << "Browser is null";
+ return nullptr;
+ }
+ TabStripModel* tab_strip_model = browser->tab_strip_model();
+ if (!tab_strip_model) {
+ LOG(INFO) << " Tab strip model is null";
+ return nullptr;
+ }
+ return tab_strip_model->GetActiveWebContents();
+}
+
+bool BrowserCreate(void* user_data) {
+ LOG(INFO) << "BrowserCreate";
+ const char** argv = static_cast<const char**>(user_data);
+ const char* chrome_arguments[] = {
+ argv[0],
+ "--no-sandbox",
+ "--ignore-gpu-blocklist",
+ "--ozone-platform=efl",
+ "--in-process-gpu",
+ "--window-size=1920,1080",
+ "--window-position=0,0",
+ "--enable-logging=stderr",
+ };
+ const int chromium_argc = sizeof(chrome_arguments) / sizeof(const char*);
+ return ChromeMain(chromium_argc, chrome_arguments);
+}
+
+void BrowserPause(void* user_data) {
+ LOG(INFO) << "BrowserPause call";
+ content::WebContents* web_contents = GetBrowserWebContent();
+ if (!web_contents) {
+ LOG(INFO) << " Active Web contents is null";
+ return;
+ }
+ content::RenderViewHost* rvh = web_contents->GetRenderViewHost();
+ content::RenderFrameHost* rfh = web_contents->GetPrimaryMainFrame();
+ if (!rvh) {
+ LOG(INFO) << " Render view host is null";
+ return;
+ }
+ if (!rfh) {
+ LOG(INFO) << " Render frame host is null";
+ return;
+ }
+ if (rvh->IsRenderViewLive()) {
+ LOG(INFO) << " pause webview";
+ content::RenderWidgetHostImpl* rwhi =
+ static_cast<content::RenderWidgetHostImpl*>(rvh->GetWidget());
+ rwhi->PauseScheduledTasks();
+ }
+ LOG(INFO) << " hide webview";
+ web_contents->WasHidden();
+}
+
+void BrowserResume(void* user_data) {
+ LOG(INFO) << "BrowserResume call";
+ content::WebContents* web_contents = GetBrowserWebContent();
+ if (!web_contents) {
+ LOG(INFO) << " Active Web contents is null";
+ return;
+ }
+ content::RenderViewHost* rvh = web_contents->GetRenderViewHost();
+ content::RenderFrameHost* rfh = web_contents->GetPrimaryMainFrame();
+ if (!rvh) {
+ LOG(INFO) << " Render view host is null";
+ return;
+ }
+ if (!rfh) {
+ LOG(INFO) << " Render frame host is null";
+ return;
+ }
+ content::RenderWidgetHostViewAura* rwhva =
+ static_cast<content::RenderWidgetHostViewAura*>(
+ web_contents->GetRenderWidgetHostView());
+ if (rvh->IsRenderViewLive() && rwhva) {
+ LOG(INFO) << " resume webview";
+ rwhva->host()->UnPauseScheduledTasks();
+ }
+ LOG(INFO) << " show webview";
+ web_contents->WasShown();
+}
+
+void BrowserTerminate(void* user_data) {
+ LOG(INFO) << "BrowserTerminate call";
+}
+
+void BrowserControl(app_control_h app_control, void* user_data) {
+ LOG(INFO) << "BrowserControl call";
+}
+
+bool IsSubprocess(const int argc, const char** argv) {
+ bool is_subprocess = false;
+ for (int i = 0; i < argc; i++) {
+ std::string arg(argv[i]);
+ is_subprocess = arg.find("--type") != std::string::npos;
+ if (is_subprocess) {
+ return is_subprocess;
+ }
+ }
+ return is_subprocess;
+}
+
+int ChromeBrowserMainTizen(const int argc, const char** argv) {
+ ui_app_lifecycle_callback_s event_callback;
+ memset(&event_callback, 0x00, sizeof(ui_app_lifecycle_callback_s));
+ event_callback.create = BrowserCreate;
+ event_callback.terminate = BrowserTerminate;
+ event_callback.pause = BrowserPause;
+ event_callback.resume = BrowserResume;
+ event_callback.app_control = BrowserControl;
+ return ui_app_main(argc, (char**)argv, &event_callback, argv);
+}
+} // namespace
+
+int ChromeMainTizen(int argc, const char** argv) {
+ LOG(INFO) << "InitChromeTizenApp";
+ if (IsSubprocess(argc, argv)) {
+ return ChromeMain(argc, argv);
+ }
+ return ChromeBrowserMainTizen(argc, argv);
+}
--- /dev/null
+# Copyright (c) 2025 Samsung Electronics. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import("//tizen_src/build/config/tizen_features.gni")
+
+external_chrome_app_efl_sources = []
+if (is_tizen) {
+ external_chrome_app_efl_sources +=
+ [ "//tizen_src/chromium_impl/chrome/app/chrome_main_tizen.cc" ]
+}
}
#endif
-#if defined(BUILD_CHROME)
__attribute__((visibility("default"))) int ChromeMain(int argc,
const char** argv) {
- LOG(INFO) << "EWK-INTERFACE : ChromeMain called..";
typedef int (*func_ptr_t)(int argc, const char** argv);
func_ptr_t fp = reinterpret_cast<func_ptr_t>(ewk_dlsym("ChromeMain"));
- if (fp)
+ if (fp) {
+ return fp(argc, argv);
+ }
+ LOG(ERROR) << "EWK-INTERFACE : ChromeMain not found.";
+ return 0;
+}
+
+__attribute__((visibility("default"))) int ChromeMainTizen(int argc,
+ const char** argv) {
+ typedef int (*func_ptr_t)(int argc, const char** argv);
+ func_ptr_t fp = reinterpret_cast<func_ptr_t>(ewk_dlsym("ChromeMainTizen"));
+ if (fp) {
return fp(argc, argv);
+ }
+ LOG(ERROR) << "EWK-INTERFACE : ChromeMainTizen not found.";
return 0;
}
-#endif // defined(BUILD_CHROME)
#ifdef __cplusplus
}
if (is_tizen) {
deps += [ "//tizen_src/downloadable:chromium-efl-install" ]
}
+ if (build_chrome) {
+ deps += [ "//tizen_src/chromium_impl/chrome:chrome_exe_tizen" ]
+ }
}
node_module_register;
# CHROMIUM BROWSER
ChromeMain;
+ ChromeMainTizen;
local: *;
};
"trim string",
[])
defines = [ "CHROMIUM_VERSION=\"" + chrome_version + "\"" ]
+ version_script = "//tizen_src/ewk/chromium-ewk.filter"
+ inputs = [ version_script ]
ldflags = [
"-Wl,--as-needed",
"-Wl,--no-undefined",
- "-Wl,--version-script=" +
- rebase_path("//tizen_src/ewk/chromium-ewk.filter"),
+ "-Wl,--version-script=" + rebase_path(version_script),
]
cflags = [
# Symbol visibility controled by chromium-ewk.filter