Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(916)

Unified Diff: Source/core/inspector/InspectorPageAgent.cpp

Issue 345723003: [DevTools] Separate text autosizing from device metrics override. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Removed dead code Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/core/inspector/InspectorPageAgent.h ('k') | Source/devtools/front_end/elements/OverridesView.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/inspector/InspectorPageAgent.cpp
diff --git a/Source/core/inspector/InspectorPageAgent.cpp b/Source/core/inspector/InspectorPageAgent.cpp
index 77df7da6316ad9c6b982ad5ccd3fdc8989e63035..54d9256f3f154cbff012e72dd06fbff71a2cf8c4 100644
--- a/Source/core/inspector/InspectorPageAgent.cpp
+++ b/Source/core/inspector/InspectorPageAgent.cpp
@@ -97,7 +97,6 @@ static const char deviceOffsetX[] = "deviceOffsetX";
static const char deviceOffsetY[] = "deviceOffsetY";
static const char fontScaleFactor[] = "fontScaleFactor";
static const char pageAgentShowFPSCounter[] = "pageAgentShowFPSCounter";
-static const char pageAgentTextAutosizingOverride[] = "pageAgentTextAutosizingOverride";
static const char pageAgentContinuousPaintingEnabled[] = "pageAgentContinuousPaintingEnabled";
static const char pageAgentShowPaintRects[] = "pageAgentShowPaintRects";
static const char pageAgentShowDebugBorders[] = "pageAgentShowDebugBorders";
@@ -117,6 +116,31 @@ KURL urlWithoutFragment(const KURL& url)
return result;
}
+static float calculateFontScaleFactor(int width, int height, float deviceScaleFactor)
+{
+ // Chromium on Android uses a device scale adjustment for fonts used in text autosizing for
+ // improved legibility. This function computes this adjusted value for text autosizing.
+ // For a description of the Android device scale adjustment algorithm, see:
+ // chrome/browser/chrome_content_browser_client.cc, GetFontScaleMultiplier(...)
pfeldman 2014/06/23 13:23:56 There is no such file.
dgozman 2014/06/27 11:40:03 There is, but function was renamed to GetDeviceSca
+ if (!width || !height || !deviceScaleFactor)
+ return 1;
+
+ const float kMinFSM = 1.05f;
+ const int kWidthForMinFSM = 320;
+ const float kMaxFSM = 1.3f;
+ const int kWidthForMaxFSM = 800;
+
+ float minWidth = std::min(width, height) / deviceScaleFactor;
+ if (minWidth <= kWidthForMinFSM)
+ return kMinFSM;
+ if (minWidth >= kWidthForMaxFSM)
+ return kMaxFSM;
+
+ // The font scale multiplier varies linearly between kMinFSM and kMaxFSM.
+ float ratio = 1.f * (minWidth - kWidthForMinFSM) / (kWidthForMaxFSM - kWidthForMinFSM);
+ return ratio * (kMaxFSM - kMinFSM) + kMinFSM;
+}
+
}
static bool decodeBuffer(const char* buffer, unsigned size, const String& textEncodingName, String* result)
@@ -354,14 +378,16 @@ InspectorPageAgent::InspectorPageAgent(Page* page, InjectedScriptManager* inject
void InspectorPageAgent::setTextAutosizingEnabled(bool enabled)
{
m_embedderTextAutosizingEnabled = enabled;
- if (!m_deviceMetricsOverridden)
+ bool emulateViewportEnabled = m_enabled && m_deviceMetricsOverridden && m_emulateViewportEnabled;
+ if (!emulateViewportEnabled)
m_page->settings().setTextAutosizingEnabled(enabled);
}
void InspectorPageAgent::setDeviceScaleAdjustment(float deviceScaleAdjustment)
{
m_embedderFontScaleFactor = deviceScaleAdjustment;
- if (!m_deviceMetricsOverridden)
+ bool emulateViewportEnabled = m_enabled && m_deviceMetricsOverridden && m_emulateViewportEnabled;
+ if (!emulateViewportEnabled)
m_page->settings().setDeviceScaleAdjustment(deviceScaleAdjustment);
}
@@ -434,11 +460,11 @@ void InspectorPageAgent::disable(ErrorString*)
m_state->setBoolean(PageAgentState::touchEventEmulationEnabled, false);
}
- if (!deviceMetricsChanged(false, 0, 0, 0, false, false, 1, 0, 0, 1, false))
+ if (!deviceMetricsChanged(false, 0, 0, 0, false, false, 1, 0, 0))
return;
// When disabling the agent, reset the override values if necessary.
- updateViewMetrics(false, 0, 0, 0, false, false, 1, 0, 0, m_embedderFontScaleFactor, m_embedderTextAutosizingEnabled);
+ updateViewMetrics(false, 0, 0, 0, false, false, 1, 0, 0);
m_state->setLong(PageAgentState::pageAgentScreenWidthOverride, 0);
m_state->setLong(PageAgentState::pageAgentScreenHeightOverride, 0);
m_state->setDouble(PageAgentState::pageAgentDeviceScaleFactorOverride, 0);
@@ -447,8 +473,6 @@ void InspectorPageAgent::disable(ErrorString*)
m_state->setDouble(PageAgentState::deviceScale, 1);
m_state->setDouble(PageAgentState::deviceOffsetX, 0);
m_state->setDouble(PageAgentState::deviceOffsetY, 0);
- m_state->setDouble(PageAgentState::fontScaleFactor, 1);
- m_state->setBoolean(PageAgentState::pageAgentTextAutosizingOverride, false);
}
void InspectorPageAgent::addScriptToEvaluateOnLoad(ErrorString*, const String& source, String* identifier)
@@ -689,7 +713,7 @@ void InspectorPageAgent::setDocumentContent(ErrorString* errorString, const Stri
DOMPatchSupport::patchDocument(*document, html);
}
-void InspectorPageAgent::setDeviceMetricsOverride(ErrorString* errorString, int width, int height, double deviceScaleFactor, bool emulateViewport, bool fitWindow, const double* optionalScale, const double* optionalOffsetX, const double* optionalOffsetY, const bool* optionalTextAutosizing, const double* optionalFontScaleFactor)
+void InspectorPageAgent::setDeviceMetricsOverride(ErrorString* errorString, int width, int height, double deviceScaleFactor, bool emulateViewport, bool fitWindow, const double* optionalScale, const double* optionalOffsetX, const double* optionalOffsetY)
{
const static long maxDimension = 10000000;
const static double maxScale = 10;
@@ -697,8 +721,6 @@ void InspectorPageAgent::setDeviceMetricsOverride(ErrorString* errorString, int
double scale = optionalScale ? *optionalScale : 1;
double offsetX = optionalOffsetX ? *optionalOffsetX : 0;
double offsetY = optionalOffsetY ? *optionalOffsetY : 0;
- bool textAutosizing = optionalTextAutosizing ? *optionalTextAutosizing : false;
- double fontScaleFactor = optionalFontScaleFactor ? *optionalFontScaleFactor : 1;
if (width < 0 || height < 0 || width > maxDimension || height > maxDimension) {
*errorString = "Width and height values must be positive, not greater than " + String::number(maxDimension);
@@ -715,11 +737,6 @@ void InspectorPageAgent::setDeviceMetricsOverride(ErrorString* errorString, int
return;
}
- if (fontScaleFactor <= 0) {
- *errorString = "fontScaleFactor must be positive";
- return;
- }
-
Settings& settings = m_page->settings();
if (!settings.acceleratedCompositingEnabled()) {
if (errorString)
@@ -727,7 +744,7 @@ void InspectorPageAgent::setDeviceMetricsOverride(ErrorString* errorString, int
return;
}
- if (!deviceMetricsChanged(true, width, height, deviceScaleFactor, emulateViewport, fitWindow, scale, offsetX, offsetY, fontScaleFactor, textAutosizing))
+ if (!deviceMetricsChanged(true, width, height, deviceScaleFactor, emulateViewport, fitWindow, scale, offsetX, offsetY))
return;
m_state->setBoolean(PageAgentState::deviceMetricsOverrideEnabled, true);
@@ -739,8 +756,6 @@ void InspectorPageAgent::setDeviceMetricsOverride(ErrorString* errorString, int
m_state->setDouble(PageAgentState::deviceScale, scale);
m_state->setDouble(PageAgentState::deviceOffsetX, offsetX);
m_state->setDouble(PageAgentState::deviceOffsetY, offsetY);
- m_state->setDouble(PageAgentState::fontScaleFactor, fontScaleFactor);
- m_state->setBoolean(PageAgentState::pageAgentTextAutosizingOverride, textAutosizing);
updateViewMetricsFromState();
}
@@ -752,7 +767,7 @@ void InspectorPageAgent::clearDeviceMetricsOverride(ErrorString*)
}
}
-bool InspectorPageAgent::deviceMetricsChanged(bool enabled, int width, int height, double deviceScaleFactor, bool emulateViewport, bool fitWindow, double scale, double offsetX, double offsetY, double fontScaleFactor, bool textAutosizing)
+bool InspectorPageAgent::deviceMetricsChanged(bool enabled, int width, int height, double deviceScaleFactor, bool emulateViewport, bool fitWindow, double scale, double offsetX, double offsetY)
{
bool currentEnabled = m_state->getBoolean(PageAgentState::deviceMetricsOverrideEnabled);
// These two always fit an int.
@@ -764,8 +779,6 @@ bool InspectorPageAgent::deviceMetricsChanged(bool enabled, int width, int heigh
double currentScale = m_state->getDouble(PageAgentState::deviceScale, 1);
double currentOffsetX = m_state->getDouble(PageAgentState::deviceOffsetX, 0);
double currentOffsetY = m_state->getDouble(PageAgentState::deviceOffsetY, 0);
- double currentFontScaleFactor = m_state->getDouble(PageAgentState::fontScaleFactor, 1);
- bool currentTextAutosizing = m_state->getBoolean(PageAgentState::pageAgentTextAutosizingOverride);
return enabled != currentEnabled
|| width != currentWidth
@@ -775,9 +788,7 @@ bool InspectorPageAgent::deviceMetricsChanged(bool enabled, int width, int heigh
|| fitWindow != currentFitWindow
|| scale != currentScale
|| offsetX != currentOffsetX
- || offsetY != currentOffsetY
- || fontScaleFactor != currentFontScaleFactor
- || textAutosizing != currentTextAutosizing;
+ || offsetY != currentOffsetY;
}
void InspectorPageAgent::setShowPaintRects(ErrorString*, bool show)
@@ -1189,12 +1200,10 @@ void InspectorPageAgent::updateViewMetricsFromState()
double scale = m_state->getDouble(PageAgentState::deviceScale, 1);
double offsetX = m_state->getDouble(PageAgentState::deviceOffsetX, 0);
double offsetY = m_state->getDouble(PageAgentState::deviceOffsetY, 0);
- double fontScaleFactor = m_state->getDouble(PageAgentState::fontScaleFactor);
- bool textAutosizingEnabled = m_state->getBoolean(PageAgentState::pageAgentTextAutosizingOverride);
- updateViewMetrics(enabled, width, height, deviceScaleFactor, emulateViewport, fitWindow, scale, offsetX, offsetY, fontScaleFactor, textAutosizingEnabled);
+ updateViewMetrics(enabled, width, height, deviceScaleFactor, emulateViewport, fitWindow, scale, offsetX, offsetY);
}
-void InspectorPageAgent::updateViewMetrics(bool enabled, int width, int height, double deviceScaleFactor, bool emulateViewport, bool fitWindow, double scale, double offsetX, double offsetY, double fontScaleFactor, bool textAutosizingEnabled)
+void InspectorPageAgent::updateViewMetrics(bool enabled, int width, int height, double deviceScaleFactor, bool emulateViewport, bool fitWindow, double scale, double offsetX, double offsetY)
{
if (enabled && !m_page->settings().acceleratedCompositingEnabled())
return;
@@ -1214,8 +1223,8 @@ void InspectorPageAgent::updateViewMetrics(bool enabled, int width, int height,
InspectorInstrumentation::mediaQueryResultChanged(document);
if (m_deviceMetricsOverridden) {
- m_page->settings().setTextAutosizingEnabled(textAutosizingEnabled);
- m_page->settings().setDeviceScaleAdjustment(fontScaleFactor);
+ m_page->settings().setTextAutosizingEnabled(emulateViewport);
+ m_page->settings().setDeviceScaleAdjustment(calculateFontScaleFactor(width, height, static_cast<float>(deviceScaleFactor)));
} else {
m_page->settings().setTextAutosizingEnabled(m_embedderTextAutosizingEnabled);
m_page->settings().setDeviceScaleAdjustment(m_embedderFontScaleFactor);
« no previous file with comments | « Source/core/inspector/InspectorPageAgent.h ('k') | Source/devtools/front_end/elements/OverridesView.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698