EMMA Coverage Report (generated Fri Aug 23 16:39:17 PDT 2013)
[all classes][org.chromium.android_webview]

COVERAGE SUMMARY FOR SOURCE FILE [AwZoomControls.java]

nameclass, %method, %block, %line, %
AwZoomControls.java67%  (2/3)83%  (10/12)88%  (130/147)89%  (35.5/40)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class AwZoomControls$10%   (0/1)100% (0/0)100% (0/0)100% (0/0)
     
class AwZoomControls$ZoomListener100% (1/1)75%  (3/4)61%  (22/36)56%  (5/9)
onZoom (boolean): void 0%   (0/1)0%   (0/14)0%   (0/4)
AwZoomControls$ZoomListener (AwZoomControls): void 100% (1/1)100% (6/6)100% (1/1)
AwZoomControls$ZoomListener (AwZoomControls, AwZoomControls$1): void 100% (1/1)100% (4/4)100% (1/1)
onVisibilityChanged (boolean): void 100% (1/1)100% (12/12)100% (4/4)
     
class AwZoomControls100% (1/1)88%  (7/8)97%  (108/111)98%  (30.5/31)
access$200 (AwZoomControls): AwContents 0%   (0/1)0%   (0/3)0%   (0/1)
AwZoomControls (AwContents): void 100% (1/1)100% (6/6)100% (3/3)
access$100 (AwZoomControls): ZoomButtonsController 100% (1/1)100% (3/3)100% (1/1)
dismissZoomPicker (): void 100% (1/1)100% (9/9)100% (4/4)
getZoomController (): ZoomButtonsController 100% (1/1)100% (42/42)100% (8/8)
getZoomControlsViewForTest (): View 100% (1/1)100% (9/9)100% (1/1)
invokeZoomPicker (): void 100% (1/1)100% (9/9)100% (4/4)
updateZoomControls (): void 100% (1/1)100% (30/30)100% (10/10)

1// Copyright (c) 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4 
5package org.chromium.android_webview;
6 
7import android.view.Gravity;
8import android.view.View;
9import android.view.ViewGroup;
10import android.widget.FrameLayout;
11import android.widget.ZoomButtonsController;
12import org.chromium.content.browser.ContentViewCore.ZoomControlsDelegate;
13 
14class AwZoomControls implements ZoomControlsDelegate {
15 
16    private AwContents mAwContents;
17    // It is advised to use getZoomController() where possible.
18    private ZoomButtonsController mZoomButtonsController;
19 
20    AwZoomControls(AwContents awContents) {
21        mAwContents = awContents;
22    }
23 
24    @Override
25    public void invokeZoomPicker() {
26        ZoomButtonsController zoomController = getZoomController();
27        if (zoomController != null) {
28            zoomController.setVisible(true);
29        }
30    }
31 
32    @Override
33    public void dismissZoomPicker() {
34        ZoomButtonsController zoomController = getZoomController();
35        if (zoomController != null) {
36            zoomController.setVisible(false);
37        }
38    }
39 
40    @Override
41    public void updateZoomControls() {
42        ZoomButtonsController zoomController = getZoomController();
43        if (zoomController == null) {
44            return;
45        }
46        boolean canZoomIn = mAwContents.canZoomIn();
47        boolean canZoomOut = mAwContents.canZoomOut();
48        if (!canZoomIn && !canZoomOut) {
49            // Hide the zoom in and out buttons if the page cannot zoom
50            zoomController.getZoomControls().setVisibility(View.GONE);
51        } else {
52            // Set each one individually, as a page may be able to zoom in or out
53            zoomController.setZoomInEnabled(canZoomIn);
54            zoomController.setZoomOutEnabled(canZoomOut);
55        }
56    }
57 
58    // This method is used in tests. It doesn't modify the state of zoom controls.
59    View getZoomControlsViewForTest() {
60        return mZoomButtonsController != null ? mZoomButtonsController.getZoomControls() : null;
61    }
62 
63    private ZoomButtonsController getZoomController() {
64        if (mZoomButtonsController == null &&
65            mAwContents.getSettings().shouldDisplayZoomControls()) {
66            mZoomButtonsController = new ZoomButtonsController(
67                    mAwContents.getContentViewCore().getContainerView());
68            mZoomButtonsController.setOnZoomListener(new ZoomListener());
69            // ZoomButtonsController positions the buttons at the bottom, but in
70            // the middle. Change their layout parameters so they appear on the
71            // right.
72            View controls = mZoomButtonsController.getZoomControls();
73            ViewGroup.LayoutParams params = controls.getLayoutParams();
74            if (params instanceof FrameLayout.LayoutParams) {
75                ((FrameLayout.LayoutParams) params).gravity = Gravity.RIGHT;
76            }
77        }
78        return mZoomButtonsController;
79    }
80 
81    private class ZoomListener implements ZoomButtonsController.OnZoomListener {
82        @Override
83        public void onVisibilityChanged(boolean visible) {
84            if (visible) {
85                // Bring back the hidden zoom controls.
86                mZoomButtonsController.getZoomControls().setVisibility(View.VISIBLE);
87                updateZoomControls();
88            }
89        }
90 
91        @Override
92        public void onZoom(boolean zoomIn) {
93            if (zoomIn) {
94                mAwContents.zoomIn();
95            } else {
96                mAwContents.zoomOut();
97            }
98            // ContentView will call updateZoomControls after its current page scale
99            // is got updated from the native code.
100        }
101    }
102}

[all classes][org.chromium.android_webview]
EMMA 2.0.5312 (C) Vladimir Roubtsov