示例#1
0
void Vibration::vibrate(const unsigned long& time)
{
    if (!time) {
        cancelVibration();
        return;
    }
    m_pattern.append(time);
    m_timerStart.startOneShot(0);
}
示例#2
0
void Vibration::suspendVibration()
{
    if (!m_isVibrating)
        return;

    m_pattern.insert(0, m_timerStop.nextFireInterval());
    m_timerStop.stop();
    cancelVibration();
}
示例#3
0
void Vibration::vibrate(const VibrationPattern& pattern)
{
    int length = pattern.size();

    // Cancel the pre-existing instance of vibration patterns, if the pattern is 0 or an empty list.
    if (!length || (length == 1 && !pattern[0])) {
        cancelVibration();
        return;
    }

    if (m_isVibrating)
        cancelVibration();

    if (m_timerStart.isActive())
        m_timerStart.stop();

    m_pattern = pattern;
    m_timerStart.startOneShot(0);
}
bool NavigatorVibration::vibrate(const VibrationPattern& pattern)
{
    VibrationPattern sanitized = pattern;
    size_t length = sanitized.size();

    // If the pattern is too long then truncate it.
    if (length > kVibrationPatternLengthMax) {
        sanitized.shrink(kVibrationPatternLengthMax);
        length = kVibrationPatternLengthMax;
    }

    // If any pattern entry is too long then truncate it.
    for (size_t i = 0; i < length; ++i) {
        if (sanitized[i] > blink::kVibrationDurationMax)
            sanitized[i] = blink::kVibrationDurationMax;
    }

    // If the last item in the pattern is a pause then discard it.
    if (length && !(length % 2))
        sanitized.removeLast();

    // Cancelling clears the stored pattern so do it before setting the new one.
    if (m_isVibrating)
        cancelVibration();

    m_pattern = sanitized;

    if (m_timerStart.isActive())
        m_timerStart.stop();

    if (!m_pattern.size())
        return true;

    if (m_pattern.size() == 1 && !m_pattern[0]) {
        m_pattern.clear();
        return true;
    }

    m_timerStart.startOneShot(0, FROM_HERE);
    m_isVibrating = true;
    return true;
}
示例#5
0
bool NavigatorVibration::vibrate(const VibrationPattern& pattern)
{
    size_t length = pattern.size();

    // If the pattern is too long then abort.
    if (length > kVibrationPatternLengthMax)
        return false;

    // If any pattern entry is too long then abort.
    for (size_t i = 0; i < length; ++i) {
        if (pattern[i] > kVibrationDurationMax)
            return false;
    }

    // Cancelling clears the pattern so do this before setting the new pattern.
    if (m_isVibrating)
        cancelVibration();

    // If the last item in the pattern is a pause then discard it.
    if (length && !(length % 2)) {
        VibrationPattern tempPattern = pattern;
        tempPattern.removeLast();
        m_pattern = tempPattern;
    } else {
        m_pattern = pattern;
    }

    if (m_timerStart.isActive())
        m_timerStart.stop();

    if (!m_pattern.size())
        return true;

    if (m_pattern.size() == 1 && !m_pattern[0]) {
        m_pattern.clear();
        return true;
    }

    m_timerStart.startOneShot(0);
    return true;
}
bool NavigatorVibration::vibrate(const VibrationPattern& pattern)
{
    // Cancelling clears the stored pattern so do it before setting the new one.
    if (m_isVibrating)
        cancelVibration();

    m_pattern = sanitizeVibrationPatternInternal(pattern);

    if (m_timerStart.isActive())
        m_timerStart.stop();

    if (!m_pattern.size())
        return true;

    if (m_pattern.size() == 1 && !m_pattern[0]) {
        m_pattern.clear();
        return true;
    }

    m_timerStart.startOneShot(0, FROM_HERE);
    m_isVibrating = true;
    return true;
}
void VibrationClientBlackBerry::vibrationDestroyed()
{
    cancelVibration();
    delete this;
}
NavigatorVibration::~NavigatorVibration()
{
    if (m_isVibrating)
        cancelVibration();
}
void NavigatorVibration::didCommitLoad(LocalFrame* frame)
{
    // A new load has been committed, which means the current page will be
    // unloaded. Cancel all running vibrations.
    cancelVibration();
}
void NavigatorVibration::pageVisibilityChanged()
{
    if (page()->visibilityState() != PageVisibilityStateVisible)
        cancelVibration();
}
示例#11
0
void WebVibrationProxy::invalidate()
{
    cancelVibration();
    m_provider.initialize(0);
}
void NavigatorVibration::pageVisibilityChanged()
{
    if (!page()->isPageVisible())
        cancelVibration();
}