auto content_info = application_data_->content_info();
if (content_info) {
default_src = content_info->src();
- // TODO(yons.kim): uncomment below codes after implementing
- // content info handler
- // type = content_info->type();
- // encoding = (!content_info->encoding().empty())
- // ? content_info->encoding() : kDefaultEncoding;
+ type = content_info->type();
+ encoding = (!content_info->encoding().empty())
+ ? content_info->encoding() : kDefaultEncoding;
}
if (!default_src.empty()) {
std::unique_ptr<ResourceManager::Resource> res =
resource_manager_->GetStartResource(appcontrol.get());
view->SetDefaultEncoding(res->encoding());
- view->LoadUrl(res->uri());
+ view->LoadUrl(res->uri(), res->mime());
view_stack_.push_front(view);
window_->SetContent(view->evas_object());
WebView* view = new WebView(window_, ewk_context_);
SetupWebView(view);
view->SetDefaultEncoding(res->encoding());
- view->LoadUrl(res->uri());
+ view->LoadUrl(res->uri(), res->mime());
view_stack_.push_front(view);
window_->SetContent(view->evas_object());
} else {
delete impl_;
}
-void WebView::LoadUrl(const std::string& url) {
- impl_->LoadUrl(url);
+void WebView::LoadUrl(const std::string& url, const std::string& mime) {
+ impl_->LoadUrl(url, mime);
}
std::string WebView::GetUrl() {
WebView(wrt::NativeWindow* window, Ewk_Context* context);
virtual ~WebView();
- void LoadUrl(const std::string& url);
+ void LoadUrl(const std::string& url, const std::string& mime = std::string());
std::string GetUrl();
void Suspend();
evas_object_del(ewk_view_);
}
-void WebViewImpl::LoadUrl(const std::string& url) {
+void WebViewImpl::LoadUrl(const std::string& url, const std::string& mime) {
+ if (!mime.empty()) {
+ mime_ = mime;
+ auto mime_override_cb = [](const char* url, const char* mime,
+ char** new_mime, void* data) -> Eina_Bool{
+ WebViewImpl* view = static_cast<WebViewImpl*>(data);
+ if (view != nullptr
+ && utils::BaseName(url) == utils::BaseName(view->GetUrl())) {
+ *new_mime = strdup(view->mime().c_str());
+ LOGGER(DEBUG) << "ewk's new_mime: " << *new_mime;
+ return EINA_TRUE;
+ }
+ return EINA_FALSE;
+ };
+ ewk_context_mime_override_callback_set(context_, mime_override_cb, this);
+ }
ewk_view_url_set(ewk_view_, url.c_str());
}
#include <map>
#include "runtime/web_view.h"
+#include "common/url.h"
class Ewk_Context;
WebViewImpl(WebView* view, wrt::NativeWindow* window, Ewk_Context* context);
virtual ~WebViewImpl();
- void LoadUrl(const std::string& url);
+ void LoadUrl(const std::string& url, const std::string& mime = std::string());
std::string GetUrl();
void Suspend();
void SetEventListener(WebView::EventListener* listener);
Evas_Object* evas_object() const;
+ std::string mime() const { return mime_; }
private:
void OnKeyEvent(Ea_Callback_Type key_type);
WebView* view_;
std::map<const std::string, Evas_Smart_Cb> smart_callbacks_;
bool fullscreen_;
+ std::string mime_;
};
} // namespace wrt