const char kInjectedBundlePath[] = "injected-bundle-path";
// Widget Info
-const char kTizenId[] = "widget-id";
+const char kTizenAppId[] = "widget-id";
const char kWidgetScale[] = "widget-scale";
const char kWidgetTheme[] = "widget-theme";
const char kWidgetEncodedBundle[] = "widget-encoded-bundle";
// different modes using CSS Media Queries.
CONTENT_EXPORT extern const char kEnableViewMode[];
CONTENT_EXPORT extern const char kInjectedBundlePath[];
-CONTENT_EXPORT extern const char kTizenId[];
+CONTENT_EXPORT extern const char kTizenAppId[];
CONTENT_EXPORT extern const char kWidgetScale[];
CONTENT_EXPORT extern const char kWidgetTheme[];
CONTENT_EXPORT extern const char kWidgetEncodedBundle[];
command_line->AppendSwitchASCII(switches::kInjectedBundlePath,
injectedBundlePath);
- const std::string& tizen_id = context->GetTizenId();
- command_line->AppendSwitchASCII(switches::kTizenId, tizen_id);
+ const std::string& tizen_app_id = context->GetTizenAppId();
+ command_line->AppendSwitchASCII(
+ switches::kTizenAppId, tizen_app_id);
double scale = context->GetWidgetScale();
command_line->AppendSwitchASCII(switches::kWidgetScale,
return result;
}
-void EWebContext::SendWidgetInfo(const std::string& tizen_id,
- double scale,
- const string& theme,
- const string& encoded_bundle) {
- tizen_id_ = tizen_id;
+void EWebContext::SetWidgetInfo(const std::string& tizen_app_id,
+ double scale,
+ const string& theme,
+ const string& encoded_bundle) {
+ tizen_app_id_ = tizen_app_id;
widget_scale_ = scale;
widget_theme_ = theme;
widget_encoded_bundle_ = encoded_bundle;
bool SetFaviconDatabasePath(const base::FilePath& path);
Evas_Object *AddFaviconObject(const char *uri, Evas *canvas) const;
- void SendWidgetInfo(const std::string& tizen_id, double scale, const std::string &theme, const std::string &encoded_bundle);
+ void SetWidgetInfo(const std::string& tizen_app_id, double scale, const std::string &theme, const std::string &encoded_bundle);
void SendWrtMessage(const Ewk_Wrt_Message_Data& message);
void SetMimeOverrideCallback(Ewk_Context_Override_Mime_For_Url_Callback callback,
bool NotificationCancelCallback(uint64_t notification_id);
const std::string& GetInjectedBundlePath() const { return injected_bundle_path_; }
- const std::string& GetTizenId() const { return tizen_id_; }
+ const std::string& GetTizenAppId() const { return tizen_app_id_; }
const std::string& GetWidgetTheme() const { return widget_theme_; }
const std::string& GetWidgetEncodedBundle() const { return widget_encoded_bundle_; }
double GetWidgetScale() const { return widget_scale_; }
std::string proxy_uri_;
std::string injected_bundle_path_;
// widget info
- std::string tizen_id_;
+ std::string tizen_app_id_;
std::string widget_theme_;
std::string widget_encoded_bundle_;
double widget_scale_;
return impl->AddFaviconObject(uri, canvas);
}
-void Ewk_Context::SendWidgetInfo(const std::string& tizen_id, double scale, const std::string &theme,
- const std::string &encoded_bundle) {
- impl->SendWidgetInfo(tizen_id, scale, theme, encoded_bundle);
+void Ewk_Context::SetWidgetInfo(const std::string& tizen_app_id,
+ double scale,
+ const std::string& theme,
+ const std::string& encoded_bundle) {
+ impl->SetWidgetInfo(tizen_app_id, scale, theme, encoded_bundle);
}
int Ewk_Context::Pixmap() const {
Evas_Object *AddFaviconObject(const char *uri, Evas *canvas) const;
// Widget
- void SendWidgetInfo(const std::string& tizen_id, double scale, const std::string &theme,
- const std::string &encoded_bundle);
+ void SetWidgetInfo(const std::string& tizen_app_id,
+ double scale,
+ const std::string& theme,
+ const std::string& encoded_bundle);
//void SendWrtMessage(const Ewk_IPC_Wrt_Message_Data& message);
// Pixmap
EINA_SAFETY_ON_NULL_RETURN(theme);
EINA_SAFETY_ON_NULL_RETURN(encodedBundle);
EINA_SAFETY_ON_NULL_RETURN(context);
- context->SendWidgetInfo(tizen_id, scale, theme, encodedBundle);
+ context->SetWidgetInfo(tizen_id, scale, theme, encodedBundle);
+}
+
+void ewk_context_tizen_app_id_set(Ewk_Context* context,
+ const char* tizen_app_id) {
+ EINA_SAFETY_ON_NULL_RETURN(context);
+ EINA_SAFETY_ON_NULL_RETURN(tizen_app_id);
+ // Ewk_Context::SetWidgetInfo() will be changed with removal of argumets
+ // hardcoded in this call once bug
+ // http://107.108.218.239/bugzilla/show_bug.cgi?id=15424 is merged.
+ context->SetWidgetInfo(tizen_app_id, 1.0, "theme", "encoded_bundle");
}
Ewk_Application_Cache_Manager* ewk_context_application_cache_manager_get(const Ewk_Context* ewkContext)
thread->AddObserver(wrt_widget_->GetObserver());
wrt_url_parser_.reset(new WrtUrlParseImpl(wrt_widget_.get()));
- std::string tizen_id = command_line.GetSwitchValueASCII(
- switches::kTizenId);
+ std::string tizen_app_id = command_line.GetSwitchValueASCII(
+ switches::kTizenAppId);
std::string theme = command_line.GetSwitchValueASCII(
switches::kWidgetTheme);
std::string encoded_bundle = command_line.GetSwitchValueASCII(
double scale_factor = 0;
base::StringToDouble(scale, &scale_factor);
- wrt_widget_->SetWidgetInfo(tizen_id, scale_factor,
- theme, encoded_bundle);
+ wrt_widget_->SetWidgetInfo(tizen_app_id, scale_factor,
+ theme, encoded_bundle);
}
render_thread_observer_.reset(new RenderThreadObserverEfl(this));
#include "common/content_switches_efl.h"
namespace {
+const char* const VERSION_FUNCTION = "DynamicPluginVersion";
const char* const START_SESSION_FUNCTION = "DynamicPluginStartSession";
const char* const STOP_SESSION_FUNCTION = "DynamicPluginStopSession";
const char* const URL_PARSING_FUNCTION = "DynamicUrlParsing";
const char* const SET_WIDGET_INFO_FUNCTION = "DynamicSetWidgetInfo";
const char* const DATABASE_ATTACH_FUNCTION = "DynamicDatabaseAttach";
+
+typedef void (*startSessionFun)(const char* tizen_app_id,
+ v8::Handle<v8::Context> context,
+ int routingHandle,
+ const char* baseURL);
+typedef void (*startSessionFun_v0)(const char* tizen_app_id,
+ v8::Handle<v8::Context> context,
+ int routingHandle,
+ double scaleFactor,
+ const char* encodedBundle,
+ const char* theme,
+ const char* baseURL);
}
DynamicPlugin::DynamicPlugin()
: m_handle(0),
+ m_version(0),
m_startSession(0),
m_stopSession(0),
m_parseURL(0),
return;
}
- *reinterpret_cast<void **>(&m_startSession) = dlsym(m_handle, START_SESSION_FUNCTION);
+ unsigned int (*versionFunction)(void);
+ *reinterpret_cast<void **>(&versionFunction) = dlsym(m_handle, VERSION_FUNCTION);
+ if (versionFunction) {
+ m_version = versionFunction();
+ if (m_version != 0 && m_version != 1) {
+ LOG(ERROR) << "Unknown plugin version: " << m_version << "!\n";
+ return;
+ }
+ }
+
+ m_startSession = dlsym(m_handle, START_SESSION_FUNCTION);
if (!m_startSession) {
LOG(ERROR) << "No " << START_SESSION_FUNCTION << " symbol found!\n";
}
m_databaseAttach(1);
}
-void DynamicPlugin::startSession(const char* tizen_id,
+void DynamicPlugin::startSession(const char* tizen_app_id,
v8::Handle<v8::Context> context,
int routingHandle,
double scaleFactor,
const char* baseURL) {
if (!m_startSession || !m_databaseAttach)
return;
- m_startSession(tizen_id, context, routingHandle,
- scaleFactor, encodedBundle,
- theme, baseURL);
+ switch (m_version) {
+ case 0: {
+ auto startSession_v0 = reinterpret_cast<startSessionFun_v0>(m_startSession);
+ startSession_v0(tizen_app_id, context, routingHandle, scaleFactor,
+ encodedBundle, theme, baseURL);
+ break; }
+ case 1: {
+ auto startSession = reinterpret_cast<startSessionFun>(m_startSession);
+ startSession(tizen_app_id, context, routingHandle, baseURL);
+ break; }
+ default:
+ return;
+ }
}
-void DynamicPlugin::stopSession(const char* tizen_id,
+void DynamicPlugin::stopSession(const char* tizen_app_id,
v8::Handle<v8::Context> context) {
if (!m_stopSession || !m_databaseAttach)
return;
- m_stopSession(tizen_id, context);
+ m_stopSession(tizen_app_id, context);
}
-void DynamicPlugin::parseURL(std::string* old_url, std::string* new_url, const char* tizen_id) {
+void DynamicPlugin::parseURL(std::string* old_url,
+ std::string* new_url,
+ const char* tizen_app_id) {
if (!m_parseURL || !m_databaseAttach)
return;
- m_parseURL(old_url, new_url, tizen_id);
+ m_parseURL(old_url, new_url, tizen_app_id);
}
-void DynamicPlugin::setWidgetInfo(const std::string& tizen_id) {
+void DynamicPlugin::setWidgetInfo(const std::string& tizen_app_id) {
if (!m_setWidgetInfo)
return;
- m_setWidgetInfo(tizen_id.c_str());
+ m_setWidgetInfo(tizen_app_id.c_str());
}
DynamicPlugin::~DynamicPlugin() {
class Ewk_Wrt_Message_Data;
-typedef void (*startSessionFun)(const char* tizen_id,
- v8::Handle<v8::Context> context,
- int routingHandle,
- double scaleFactor,
- const char* encodedBundle,
- const char* theme,
- const char* baseURL);
-typedef void (*stopSessionFun)(const char* tizen_id,
+typedef void (*stopSessionFun)(const char* tizen_app_id,
v8::Handle<v8::Context> context);
typedef void (*onIPCMessageFun)(
const Ewk_Wrt_Message_Data& data);
typedef void (*parseUrlFun)(std::string* old_url,
std::string* new_url,
- const char* tizen_id);
-typedef void (*setWidgetInfoFun)(const char* tizen_id);
+ const char* tizen_app_id);
+typedef void (*setWidgetInfoFun)(const char* tizen_app_id);
typedef void (*databaseAttachFun)(int databaseAttach);
class DynamicPlugin {
public:
- void startSession(const char* tizen_id,
+ void startSession(const char* tizen_app_id,
v8::Handle<v8::Context> context,
int routingHandle,
double scaleFactor,
const char* encodedBundle,
const char* theme,
const char* baseURL);
- void stopSession(const char* tizen_id,
+ void stopSession(const char* tizen_app_id,
v8::Handle<v8::Context> context);
- void parseURL(std::string* old_url, std::string* new_url, const char* tizen_id);
- void setWidgetInfo(const std::string& tizen_id);
+ void parseURL(std::string* old_url, std::string* new_url, const char* tizen_app_id);
+ void setWidgetInfo(const std::string& tizen_app_id);
void messageReceived(const Ewk_Wrt_Message_Data& data);
~DynamicPlugin();
DynamicPlugin& operator=(const DynamicPlugin&);
void* m_handle;
- startSessionFun m_startSession;
+ unsigned int m_version;
+ void* m_startSession;
stopSessionFun m_stopSession;
parseUrlFun m_parseURL;
setWidgetInfoFun m_setWidgetInfo;
// dagerous as it expects to be loaded in the render process.
std::string old_url = request()->url().possibly_invalid_spec();
std::string s_new_url;
- std::string tizen_id = WrtWidgetHost::Get()->TizenId();
+ std::string tizen_app_id = WrtWidgetHost::Get()->TizenAppId();
DynamicPlugin::instance().parseURL(
- &old_url, &s_new_url, tizen_id.c_str());
+ &old_url, &s_new_url, tizen_app_id.c_str());
OnUrlRetrieved(GURL(s_new_url));
} else {
URLRequestFileJob::Start();
// It's only used by the wrt_file_protocol_handler which is not going to be used in the future
// Candidate for deletion.
-std::string WrtWidgetHost::TizenId() const {
+std::string WrtWidgetHost::TizenAppId() const {
return std::string();
}
bool InWrt() const;
- std::string TizenId() const;
+ std::string TizenAppId() const;
private:
friend class WrtWidgetHostMessageFilter;
return observer_;
}
-void WrtWidget::SetWidgetInfo(const std::string& tizen_id,
+void WrtWidget::SetWidgetInfo(const std::string& tizen_app_id,
double scaleFactor,
const std::string& theme,
const std::string& encodedBundle) {
- tizen_id_ = tizen_id;
+ tizen_app_id_ = tizen_app_id;
scale_ = scaleFactor;
theme_ = theme;
encodedBundle_ = encodedBundle;
- DynamicPlugin::instance().setWidgetInfo(tizen_id_);
+ DynamicPlugin::instance().setWidgetInfo(tizen_app_id_);
}
bool WrtWidget::IsWidgetInfoSet() const {
- return !tizen_id_.empty();
+ return !tizen_app_id_.empty();
}
void WrtWidget::ParseUrl(const GURL& url, GURL& new_url) {
- if (!tizen_id_.empty()) {
+ if (!tizen_app_id_.empty()) {
std::string old_url = url.possibly_invalid_spec();
std::string s_new_url;
- DynamicPlugin::instance().parseURL(&old_url, &s_new_url, tizen_id_.c_str());
+ DynamicPlugin::instance().parseURL(&old_url, &s_new_url, tizen_app_id_.c_str());
if (s_new_url.empty())
new_url = url;
else
void WrtWidget::StartSession(v8::Handle<v8::Context> context,
int routingHandle,
const std::string& baseURL) {
- if (!tizen_id_.empty() && !context.IsEmpty()) {
- DynamicPlugin::instance().startSession(tizen_id_.c_str(),
+ if (!tizen_app_id_.empty() && !context.IsEmpty()) {
+ DynamicPlugin::instance().startSession(tizen_app_id_.c_str(),
context,
routingHandle,
scale_,
}
void WrtWidget::StopSession(v8::Handle<v8::Context> context) {
- if (!tizen_id_.empty() && !context.IsEmpty()) {
- DynamicPlugin::instance().stopSession(tizen_id_.c_str(), context);
+ if (!tizen_app_id_.empty() && !context.IsEmpty()) {
+ DynamicPlugin::instance().stopSession(tizen_app_id_.c_str(), context);
}
}
void WrtWidget::MessageReceived(const Ewk_Wrt_Message_Data& data) {
- if (!tizen_id_.empty())
+ if (!tizen_app_id_.empty())
DynamicPlugin::instance().messageReceived(data);
}
content::RenderThreadObserver* GetObserver();
- void SetWidgetInfo(const std::string& tizen_id,
+ void SetWidgetInfo(const std::string& tizen_app_id,
double scaleFactor,
const std::string& theme,
const std::string& encodedBundle);
double scale_;
std::string encodedBundle_;
std::string theme_;
- std::string tizen_id_;
+ std::string tizen_app_id_;
WrtRenderThreadObserver* observer_;
};
}
} // namespace
-extern "C" EXPORT void DynamicPluginStartSession(int widget_id,
+extern "C" EXPORT unsigned int DynamicPluginVersion(void) {
+ return 1;
+}
+
+extern "C" EXPORT void DynamicPluginStartSession(const char* tizne_app_id,
v8::Handle<v8::Context> context,
int routingHandle,
- double scale,
- const char* encodeBundle,
- const char* theme,
const char* baseURL) {
Run("document.write(\"DynamicPluginStartSession\");");
}
{
webview = CreateWindow();
const char simpleHTML[] = "<html><body><script>document.write(\"\");</script></body></html>";
+ ewk_context_tizen_app_id_set(ewk_view_context_get(webview), "1");
ASSERT_TRUE(ewk_view_html_string_load(webview, simpleHTML, NULL, NULL));
- ewk_send_widget_info(ewk_view_context_get(webview), "1", 1.0, "theme", "encodeBundle");
runWithTimer();
ASSERT_EQ(Success, EventLoopStart());
}