;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Topo

Por determinação da Justiça, WhatsApp fica fora do ar

Do UOL, em São Paulo

02/05/2016 12h23Atualizada em 05/08/2020 02h11

Por determinação da Justiça de Sergipe, as operadoras de telefonia bloquearam os serviços do aplicativo WhatsApp por volta das 14 horas desta segunda-feira (2). A suspensão deve durar 72 horas, segundo ordem do juiz Marcel Montalvão, o mesmo que no começo de março mandou prender o vice-presidente do Facebook na América Latina, o argentino Diego Jorge Dzodan.

O juiz atendeu a uma medida cautelar ingressada pela Polícia Federal, com parecer favorável do Ministério Público, já que o WhatsApp não cumpriu os pedidos da Justiça, mesmo após o pedido de prisão do representante do Facebook no Brasil.

A determinação judicial é de quebra do sigilo das mensagens do aplicativo para fins de investigação sobre crime organizado de tráfico de drogas, na cidade de Lagarto/SE. O Juiz informou ainda, que a medida cautelar está baseada nos arts. 11, 12, 13 e 15, caput, parágrafo 4º, da Lei do Marco Civil da Internet.

Em março, a Justiça havia solicitado os endereços físicos de onde os traficantes trocavam mensagens tanto pelo Facebook quanto pelo WhatsApp, app de mensagens que também pertence ao Facebook. A empresa disse, em casos anteriores, que não tem os dados pedidos pela Justiça brasileira, pois não armazena dados de conversas — segundo ela, só possui os números de telefone.

"Depois de cooperar com toda a extensão da nossa capacidade com os tribunais brasileiros, estamos desapontados que um juiz de Sergipe decidiu mais uma vez ordenar o bloqueio de WhatsApp no Brasil. Esta decisão pune mais de 100 milhões de brasileiros que dependem do nosso serviço para se comunicar, istrar os seus negócios e muito mais, para nos forçar a entregar informações que afirmamos repetidamente que nós não temos", disse o WhatsApp sobre a nova decisão do juiz Marcel Montalvão.

Titular da Vara Criminal da comarca de Lagarto, a 75 quilômetros da capital, Aracaju (SE), onde mora, o juiz Montalvão é considerado um magistrado enérgico em suas decisões no combate ao tráfico de drogas e tem forte preocupação com o impacto dos entorpecentes sobre crianças, jovens e adolescentes.

Especialistas afirmam que o WhatsApp tem de seguir a lei brasileira e deveria cooperar mais com o governo. Segundo o Marco Civil Brasileiro, o WhatsApp —por ter representação no país, que no caso é o Facebook— é obrigado a guardar todos os registros de o dos usuários por um período mínimo de seis meses e fornecê-las mediante ordem judicial. Prazo que pode se estender a depender da ordem judicial. "Os apps podem ser obrigados a guardar as informações sobre determinados usuários a partir do recebimento de uma ordem", afirma Renato Opice Blum, professor e coordenador do curso de direito digital do Insper.

Vale lembrar que a conexão por Wi-Fi também será bloqueada pelas operadoras de telefonia fixa. A Vivo já confirmou que irá suspender o o ao aplicativo também pelo o pela banda larga fixa, assim como a Net. Claro, Oi, Tim e Nextel também já confirmaram o bloqueio.

WhatsApp na berlinda desde 2015

Em dezembro do ano ado, a Justiça mandou suspender o WhatsApp por motivo parecido, com base na lei do Marco Civil da internet, que exige que serviços ofertados no país respeitem a legislação brasileira. O bloqueio devia durar 48 horas, mas no fim o aplicativo ficou 12 horas fora do ar. Diversos recursos pediram a volta do aplicativo por considerar a ação exagerada ao deixar milhões de pessoas sem o ao app. A OI foi uma das empresas que entrou com ação. Desta vez, nenhuma das operadoras se posicionou sobre entrar na Justiça para pedir o cancelamento do bloqueio.

Em fevereiro de 2015, a Justiça de Teresina, no Piauí, também determinou a suspensão do WhatsApp por não cumprir decisões judiciais. Mas as operadoras recorreram e o aplicativo não teve seu funcionamento suspenso.

Especialistas interpretaram, na época, que era uma tentativa de forçar a empresa a colaborar com a investigação de crimes graves, já que as aplicações de multas não surtiam efeito.

Frederico Ceroy, presidente do Instituto Brasileiro de Direito Digital, afirmou na época que a decisão abria um precedente no Judiciário brasileiro, especialmente pela postura "arredia" que o Facebook tem tido com a Justiça do país. "Se a empresa continuar se negando a fornecer os dados requeridos judicialmente, haverá um pedido por dia", disse o especialista.

Embora o WhatsApp alegue não ter as informações solicitadas pela Justiça brasileira, as autoridades, de acordo com Ceroy, pedem que sejam informados apenas os dados que possui. "Por exemplo, um determinado usuário usa o celular número tal, da operadora tal e se conectou com esse outro usuário da operadora tal. Não se quer ter o às conversas", afirma. "O que notamos é que há uma má vontade do app em colaborar."