#include "base/json/json_writer.h"
#include "base/prefs/pref_service.h"
#include "base/message_loop/message_loop.h"
+#include "base/strings/string_number_conversions.h"
#include "base/strings/stringprintf.h"
#include "base/strings/utf_string_conversions.h"
#include "base/values.h"
is_closed_(false),
node_integration_("except-iframe"),
has_dialog_attached_(false),
+ zoom_factor_(1.0),
weak_factory_(this),
inspectable_web_contents_(
brightray::InspectableWebContents::Create(web_contents)) {
if (options->GetDictionary(switches::kWebPreferences, &web_preferences))
web_preferences_.reset(web_preferences->DeepCopy());
+ // Read the zoom factor before any navigation.
+ options->GetDouble(switches::kZoomFactor, &zoom_factor_);
+
web_contents->SetDelegate(this);
inspectable_web_contents()->SetDelegate(this);
// Append --node-integration to renderer process.
command_line->AppendSwitchASCII(switches::kNodeIntegration,
node_integration_);
+
+ // Append --zoom-factor.
+ if (zoom_factor_ != 1.0)
+ command_line->AppendSwitchASCII(switches::kZoomFactor,
+ base::DoubleToString(zoom_factor_));
}
void NativeWindow::OverrideWebkitPrefs(const GURL& url, WebPreferences* prefs) {
// it should be cancelled when we can prove that the window is responsive.
base::CancelableClosure window_unresposive_closure_;
- // web preferences.
+ // Web preferences.
scoped_ptr<base::DictionaryValue> web_preferences_;
+ // Page's default zoom factor.
+ double zoom_factor_;
+
base::WeakPtrFactory<NativeWindow> weak_factory_;
base::WeakPtr<NativeWindow> devtools_window_;
// The WebPreferences.
const char kWebPreferences[] = "web-preferences";
+// The factor of which page should be zoomed.
+const char kZoomFactor[] = "zoom-factor";
+
} // namespace switches
} // namespace atom
extern const char kAcceptFirstMouse[];
extern const char kUseContentSize[];
extern const char kWebPreferences[];
+extern const char kZoomFactor[];
} // namespace switches
#include <vector>
#include "atom/common/api/api_messages.h"
+#include "atom/common/options_switches.h"
#include "atom/renderer/api/atom_renderer_bindings.h"
#include "atom/renderer/atom_renderer_client.h"
+#include "base/command_line.h"
+#include "base/strings/string_number_conversions.h"
#include "content/public/renderer/render_view.h"
#include "ipc/ipc_message_macros.h"
#include "third_party/WebKit/public/web/WebDraggableRegion.h"
AtomRenderViewObserver::~AtomRenderViewObserver() {
}
+void AtomRenderViewObserver::DidCreateDocumentElement(WebKit::WebFrame* frame) {
+ std::string zoom_factor_str = CommandLine::ForCurrentProcess()->
+ GetSwitchValueASCII(switches::kZoomFactor);;
+ if (zoom_factor_str.empty())
+ return;
+ double zoom_factor;
+ if (!base::StringToDouble(zoom_factor_str, &zoom_factor))
+ return;
+ double zoom_level = WebKit::WebView::zoomFactorToZoomLevel(zoom_factor);
+ frame->view()->setZoomLevel(zoom_level);
+}
+
void AtomRenderViewObserver::DraggableRegionsChanged(WebKit::WebFrame* frame) {
WebKit::WebVector<WebKit::WebDraggableRegion> webregions =
frame->document().draggableRegions();
private:
// content::RenderViewObserver implementation.
+ virtual void DidCreateDocumentElement(WebKit::WebFrame* frame) OVERRIDE;
virtual void DraggableRegionsChanged(WebKit::WebFrame* frame) OVERRIDE;
virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;