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

COVERAGE SUMMARY FOR SOURCE FILE [WeekPicker.java]

nameclass, %method, %block, %line, %
WeekPicker.java0%   (0/1)0%   (0/14)0%   (0/185)0%   (0/51)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class WeekPicker0%   (0/1)0%   (0/14)0%   (0/185)0%   (0/51)
WeekPicker (Context, long, long): void 0%   (0/1)0%   (0/31)0%   (0/8)
createDateFromValue (long): Calendar 0%   (0/1)0%   (0/15)0%   (0/6)
createDateFromWeek (int, int): Calendar 0%   (0/1)0%   (0/24)0%   (0/8)
getISOWeekYearForDate (Calendar): int 0%   (0/1)0%   (0/28)0%   (0/8)
getMaxPositionInYear (): int 0%   (0/1)0%   (0/13)0%   (0/3)
getMaxYear (): int 0%   (0/1)0%   (0/4)0%   (0/1)
getMinPositionInYear (): int 0%   (0/1)0%   (0/12)0%   (0/3)
getMinYear (): int 0%   (0/1)0%   (0/4)0%   (0/1)
getNumberOfWeeks (): int 0%   (0/1)0%   (0/10)0%   (0/2)
getPositionInYear (): int 0%   (0/1)0%   (0/3)0%   (0/1)
getWeek (): int 0%   (0/1)0%   (0/4)0%   (0/1)
getWeekForDate (Calendar): int 0%   (0/1)0%   (0/4)0%   (0/1)
getYear (): int 0%   (0/1)0%   (0/4)0%   (0/1)
setCurrentDate (int, int): void 0%   (0/1)0%   (0/29)0%   (0/7)

1// Copyright 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.content.browser.input;
6 
7import android.content.Context;
8 
9import java.util.Calendar;
10 
11import org.chromium.content.R;
12 
13// This class is heavily based on android.widget.DatePicker.
14public class WeekPicker extends TwoFieldDatePicker {
15 
16    public WeekPicker(Context context, long minValue, long maxValue) {
17        super(context, minValue, maxValue);
18 
19        getPositionInYearSpinner().setContentDescription(
20                getResources().getString(R.string.accessibility_date_picker_week));
21 
22        // initialize to current date
23        Calendar cal = Calendar.getInstance();
24        cal.setFirstDayOfWeek(Calendar.MONDAY);
25        cal.setMinimalDaysInFirstWeek(4);
26        cal.setTimeInMillis(System.currentTimeMillis());
27        init(getISOWeekYearForDate(cal), getWeekForDate(cal), null);
28    }
29 
30    private Calendar createDateFromWeek(int year, int week) {
31        Calendar date = Calendar.getInstance();
32        date.clear();
33        date.setFirstDayOfWeek(Calendar.MONDAY);
34        date.setMinimalDaysInFirstWeek(4);
35        date.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
36        date.set(Calendar.YEAR, year);
37        date.set(Calendar.WEEK_OF_YEAR, week);
38        return date;
39    }
40 
41    @Override
42    protected Calendar createDateFromValue(long value) {
43        Calendar date = Calendar.getInstance();
44        date.clear();
45        date.setFirstDayOfWeek(Calendar.MONDAY);
46        date.setMinimalDaysInFirstWeek(4);
47        date.setTimeInMillis(value);
48        return date;
49    }
50 
51    public static int getISOWeekYearForDate(Calendar date) {
52        int year = date.get(Calendar.YEAR);
53        int month = date.get(Calendar.MONTH);
54        int week = date.get(Calendar.WEEK_OF_YEAR);
55        if (month == 0 && week > 51) {
56            year--;
57        } else if (month == 11 && week == 1) {
58            year++;
59        }
60        return year;
61    }
62 
63    public static int getWeekForDate(Calendar date) {
64        return date.get(Calendar.WEEK_OF_YEAR);
65    }
66 
67    @Override
68    protected void setCurrentDate(int year, int week) {
69        Calendar date = createDateFromWeek(year, week);
70        if (date.before(getMinDate())) {
71            setCurrentDate(getMinDate());
72        } else if (date.after(getMaxDate())) {
73            setCurrentDate(getMaxDate());
74        } else {
75            setCurrentDate(date);
76        }
77    }
78 
79    private int getNumberOfWeeks() {
80        // Create a date in the middle of the year, where the week year matches the year.
81        Calendar date = createDateFromWeek(getYear(), 20);
82        return date.getActualMaximum(Calendar.WEEK_OF_YEAR);
83    }
84 
85    /**
86     * @return The selected year.
87     */
88    @Override
89    public int getYear() {
90        return getISOWeekYearForDate(getCurrentDate());
91    }
92 
93    /**
94     * @return The selected week.
95     */
96    public int getWeek() {
97        return getWeekForDate(getCurrentDate());
98    }
99 
100    @Override
101    public int getPositionInYear() {
102        return getWeek();
103    }
104 
105    @Override
106    protected int getMaxYear() {
107        return getISOWeekYearForDate(getMaxDate());
108    }
109 
110    @Override
111    protected int getMinYear() {
112        return getISOWeekYearForDate(getMinDate());
113    }
114 
115    @Override
116    protected int getMaxPositionInYear() {
117        if (getYear() == getISOWeekYearForDate(getMaxDate())) {
118            return getWeekForDate(getMaxDate());
119        }
120        return getNumberOfWeeks();
121    }
122 
123    @Override
124    protected int getMinPositionInYear() {
125        if (getYear() == getISOWeekYearForDate(getMinDate())) {
126            return getWeekForDate(getMinDate());
127        }
128        return 1;
129    }
130}

[all classes][org.chromium.content.browser.input]
EMMA 2.0.5312 (C) Vladimir Roubtsov