diff --git a/Applications/Browser/Tab.cpp b/Applications/Browser/Tab.cpp index 76b10a6cb6..0e6e9a8423 100644 --- a/Applications/Browser/Tab.cpp +++ b/Applications/Browser/Tab.cpp @@ -49,19 +49,31 @@ #include #include #include -#include #include #include #include #include -#include #include +#include +#include namespace Browser { extern bool g_use_old_html_parser; extern String g_home_url; +URL url_from_user_input(const String& input) +{ + auto url = URL(input); + if (url.is_valid()) + return url; + + StringBuilder builder; + builder.append("http://"); + builder.append(input); + return URL(builder.build()); +} + Tab::Tab() { auto& widget = *this; @@ -78,26 +90,30 @@ Tab::Tab() update_actions(); TemporaryChange change(m_should_push_loads_to_history, false); m_page_view->load(m_history.current()); - }, this); + }, + this); m_go_forward_action = GUI::CommonActions::make_go_forward_action([this](auto&) { m_history.go_forward(); update_actions(); TemporaryChange change(m_should_push_loads_to_history, false); m_page_view->load(m_history.current()); - }, this); + }, + this); toolbar.add_action(*m_go_back_action); toolbar.add_action(*m_go_forward_action); toolbar.add_action(GUI::CommonActions::make_go_home_action([this](auto&) { m_page_view->load(g_home_url); - }, this)); + }, + this)); m_reload_action = GUI::CommonActions::make_reload_action([this](auto&) { TemporaryChange change(m_should_push_loads_to_history, false); m_page_view->reload(); - }, this); + }, + this); toolbar.add_action(*m_reload_action); @@ -106,15 +122,8 @@ Tab::Tab() m_location_box->set_preferred_size(0, 22); m_location_box->on_return_pressed = [this] { - String location = m_location_box->text(); - if (!URL(location).is_valid()) { - StringBuilder builder; - builder.append("http://"); - builder.append(location); - location = builder.build(); - } - - m_page_view->load(location); + auto url = url_from_user_input(m_location_box->text()); + m_page_view->load(url); m_page_view->set_focus(true); }; diff --git a/Applications/Browser/main.cpp b/Applications/Browser/main.cpp index 796ac772b5..f8fdf7804a 100644 --- a/Applications/Browser/main.cpp +++ b/Applications/Browser/main.cpp @@ -24,6 +24,7 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#include #include "BookmarksBarWidget.h" #include "InspectorWidget.h" #include "Tab.h" @@ -46,6 +47,7 @@ namespace Browser { static const char* bookmarks_filename = "/home/anon/bookmarks.json"; String g_home_url; bool g_use_old_html_parser = false; +URL url_from_user_input(const String& input); } @@ -183,8 +185,13 @@ int main(int argc, char** argv) }; URL first_url = Browser::g_home_url; - if (specified_url) - first_url = URL::create_with_url_or_path(specified_url); + if (specified_url) { + if (Core::File::exists(specified_url)) { + first_url = URL::create_with_file_protocol(Core::File::real_path_for(specified_url)); + } else { + first_url = Browser::url_from_user_input(specified_url); + } + } window_actions.on_create_new_tab = [&] { create_new_tab(Browser::g_home_url, true);