| 2536 | } |
| 2537 | |
| 2538 | static void setViewport(Document document, boolean overview) { |
| 2539 | // https://developer.mozilla.org/en-US/docs/Mozilla/Mobile/Viewport_meta_tag |
| 2540 | // https://drafts.csswg.org/css-device-adapt/#viewport-meta |
| 2541 | Elements meta = document.select("meta").select("[name=viewport]"); |
| 2542 | // Note that the browser will recognize meta elements in the body too |
| 2543 | if (overview) { |
| 2544 | // fit width |
| 2545 | meta.remove(); |
| 2546 | document.head().prependElement("meta") |
| 2547 | .attr("name", "viewport") |
| 2548 | .attr("content", "width=device-width"); |
| 2549 | } else { |
| 2550 | if (meta.size() == 1) { |
| 2551 | String content = meta.attr("content"); |
| 2552 | String[] param = content.split("[;,]"); |
| 2553 | for (int i = 0; i < param.length; i++) { |
| 2554 | String[] kv = param[i].split("="); |
| 2555 | if (kv.length == 2) { |
| 2556 | String key = kv[0] |
| 2557 | .replaceAll("\\s+", "") |
| 2558 | .toLowerCase(Locale.ROOT); |
| 2559 | switch (key) { |
| 2560 | case "user-scalable": |
| 2561 | kv[1] = "yes"; |
| 2562 | param[i] = TextUtils.join("=", kv); |
| 2563 | break; |
| 2564 | case "minimum-scale": |
| 2565 | case "maximum-scale": |
| 2566 | kv[0] = "disabled-scaling"; |
| 2567 | param[i] = TextUtils.join("=", kv); |
| 2568 | break; |
| 2569 | } |
| 2570 | } |
| 2571 | } |
| 2572 | meta.attr("content", TextUtils.join(",", param)); |
| 2573 | } else { |
| 2574 | meta.remove(); |
| 2575 | document.head().prependElement("meta") |
| 2576 | .attr("name", "viewport") |
| 2577 | .attr("content", "width=device-width, initial-scale=1.0"); |
| 2578 | } |
| 2579 | } |
| 2580 | |
| 2581 | if (BuildConfig.DEBUG) |
| 2582 | Log.i(document.head().html()); |
| 2583 | } |
| 2584 | |
| 2585 | static void overrideWidth(Document document) { |
| 2586 | List<String> tags = new ArrayList<>(); |